paysera / lib-rest-bundle
此软件包最新版本(5.1.1)没有可用的许可证信息。
帮助轻松将常规控制器转换为RESTful控制器
5.1.1
2024-02-22 12:18 UTC
Requires
- php: >=7.4
- doctrine/orm: ^2.0
- doctrine/persistence: ^3.2
- paysera/lib-serializer: ^3.0
- symfony/config: ^4.0 || ^5.0
- symfony/dependency-injection: ^4.0 || ^5.0
- symfony/http-foundation: ^4.0 || ^5.0
- symfony/http-kernel: ^4.0 || ^5.0
- symfony/routing: ^4.0 || ^5.0
- symfony/security-core: ^4.0 || ^5.0
- symfony/validator: ^4.0 || ^5.0
Requires (Dev)
- mockery/mockery: ^1.2
- phpunit/phpunit: ^8.0
README
已弃用,请使用 https://github.com/paysera/lib-api-bundle 代替。
此工具包提供快速API开发的手段。
安装
- 下载工具包:
composer require paysera/lib-rest-bundle
- 启用工具包
class AppKernel extends Kernel { public function registerBundles() { $bundles = array( // ... new Paysera\Bundle\RestBundle\PayseraRestBundle(), ); // ... } }
配置
- 完整工具包配置示例
paysera_rest: property_path_converter: 'my_custom_path_converter' # Overrides the default path converter locales: ['en', 'ru', 'lt'] # Optional list of accepted locales
基本用法
- 创建和配置您的控制器
class ApiController { public function saveData(Data $data) { ... return new CustomResponseEntity(); } }
<service id="app_bundle.controller.api_controller" class="AppBundle\Controller\ApiController" public="true"> ... </service>
- 创建API服务
<service id="app_bundle.service.api_service" class="Paysera\Bundle\RestBundle\RestApi"> <tag name="paysera_rest.api" api_key="my_custom_api_key"/> <argument type="service" id="service_container"/> <argument type="service" id="logger"/> </service>
- 配置您的路由并添加
api_key
<route id="my_api_route.post_data" path="/resource" methods="POST"> <default key="_controller">app_bundle.controller.api_controller:saveData</default> <default key="api_key">my_custom_api_key</default> </route>
- 可选地,将请求和响应映射器添加到您的API服务
<service id="app_bundle.service.api_service" class="Paysera\Bundle\RestBundle\RestApi"> <tag name="paysera_rest.api" api_key="my_custom_api_key"/> <argument type="service" id="service_container"/> <argument type="service" id="logger"/> <call method="addRequestMapper"> <argument>app_bundle.normalizer.data</argument> <argument>app_bundle.controller.api_controller:saveData</argument> <argument>data</argument> </call> <call method="addResponseMapper"> <argument>app_bundle.normalizer.custom_response</argument> <argument>app_bundle.controller.api_controller:saveData</argument> </call> </service>
在此,app_bundle.normalizer.data
是实现 \Paysera\Component\Serializer\Normalizer\DenormalizerInterface
的服务,app_bundle.normalizer.custom_response
是实现 \Paysera\Component\Serializer\Normalizer\NormalizerInterface
的服务。这两个服务必须在它们的定义中配置为公开。
测试
php7.4
docker build -t lib-rest7.4 -f docker/Dockerfile_PHP7.4 .
docker run -it -u $UID -v $PWD:/app -w /app lib-rest7.4 composer i
docker run -it -u $UID -v $PWD:/app -w /app lib-rest7.4 bin/phpunit
php8.0
docker build -t lib-rest8.0 -f docker/Dockerfile_PHP8.0 .
docker run -it -u $UID -v $PWD:/app -w /app lib-rest8.0 composer i
docker run -it -u $UID -v $PWD:/app -w /app lib-rest8.0 bin/phpunit
调试
php7.4
docker run --add-host=host.docker.internal:host-gateway -e XDEBUG_MODE=debug -it -u $UID -v $PWD:/app -w /app lib-rest7.4 ...
php8.0
docker run --add-host=host.docker.internal:host-gateway -e XDEBUG_MODE=debug -it -u $UID -v $PWD:/app -w /app lib-rest8.0 ...