auto1-oss/service-api-components-bundle
最新稳定版本:v1.3.0
Composer 安装命令:
composer require auto1-oss/service-api-components-bundle
包简介
Auto1 Common Components for Service API/Client/Handler Bundles
README 文档
README
config.yml
framework: serializer: { enabled: true } property_info: { enabled: true }
Example EP Provider symfony.service declaration:
tag
{ name: 'auto1.api.endpoint_provider', priority: 0 }
services.yml
services: your_app.api.endpoint.provider: class: Auto1\ServiceAPIComponentsBundle\Service\Endpoint\EndpointProviderConfiguration arguments: - '@auto1.api.endpoint.factory' - '@your_app.api.endpoint_configuration.loader' tags: - { name: 'auto1.api.endpoint_provider', priority: 0 } your_app.api.endpoint_configuration.loader: class: Auto1\ServiceAPIComponentsBundle\Service\Endpoint\EndpointsConfigurationLoader arguments: - '%kernel.project_dir%/src/Resources/endpoints.yml'
Super Quick Start:
Only for proof of concept etc.
class YourProvider implements EndpointProviderInterface { public function getEndpoints(): array { return [ new EndpointImmutable( ..., ), ]; } }
services: your_app.api.endpoint.provider: class: YourProvider tags: - { name: 'auto1.api.endpoint_provider', priority: 0 }
Example of EP definition (yaml):
# Auth - method: 'POST' baseUrl: '%wkda.java_api.url%' path: '/v1/auth/oauth/token' requestFormat: 'url' requestClass: 'Auto1\ServiceDTOCollection\Authentication\OAuth\Request\PostRefreshTokenRequest' responseClass: 'Auto1\ServiceDTOCollection\Authentication\OAuth\Response\Token' - method: 'GET' baseUrl: '%wkda.java_api.admin_url%' path: '/v1/auth/user/admin/{userUuid}/roles' requestFormat: 'url' requestClass: 'Auto1\ServiceDTOCollection\Authentication\User\Request\GetUserRolesRequest' responseClass: 'Auto1\ServiceDTOCollection\Authentication\User\Response\UserRoles' # CarLead - method: 'GET' baseUrl: '%wkda.java_api.url%' path: '/v1/carlead/vin/{vin}' requestClass: 'Auto1\ServiceDTOCollection\CarLead\CarLeadRead\Request\GetCarDetailsByVinRequest' responseClass: 'Auto1\ServiceDTOCollection\CarLead\CarLeadRead\Response\CarLead[]'
Alternative:
# Auth refreshToken: method: 'POST' baseUrl: '%wkda.java_api.url%' path: '/v1/auth/oauth/token' requestFormat: 'url' requestClass: 'Auto1\ServiceDTOCollection\Authentication\OAuth\Request\PostRefreshTokenRequest' responseClass: 'Auto1\ServiceDTOCollection\Authentication\OAuth\Response\Token' getUserRoles: method: 'GET' baseUrl: '%wkda.java_api.admin_url%' path: '/v1/auth/user/admin/{userUuid}/roles' requestFormat: 'url' requestClass: 'Auto1\ServiceDTOCollection\Authentication\User\Request\GetUserRolesRequest' responseClass: 'Auto1\ServiceDTOCollection\Authentication\User\Response\UserRoles' # CarLead getCarLeadByVin: method: 'GET' baseUrl: '%wkda.java_api.url%' path: '/v1/carlead/vin/{vin}' requestClass: 'Auto1\ServiceDTOCollection\CarLead\CarLeadRead\Request\GetCarDetailsByVinRequest' responseClass: 'Auto1\ServiceDTOCollection\CarLead\CarLeadRead\Response\CarLead[]'
Example of ServiceRequest implementation:
class GetCarDetailsByVinRequest implements ServiceRequestInterface { private $vin; public function setVin(string $vin): self { $this->vin = $vin; return $this; } public function getVin() { return $this->vin; } }
Url resolution
For altering the default behaviour of Url resolution see UrlResolverCompilerPass and use auto1.api.url_resolver tag together with priority:
# this is a default resolver auto1.api.url_resolver.parameter_aware: class: Auto1\ServiceAPIComponentsBundle\Service\UrlResolver\ParameterAwareUrlResolver arguments: - '@service_container' tags: - { name: 'auto1.api.url_resolver', priority: 0 }
Debug:
To output all registered endpoints:
bin/console auto1.debug.endpoints
统计信息
- 总下载量: 84.59k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 5
- 点击次数: 1
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2019-02-19