bartlomiejbeta / api-scope-bundle
简单的API查询字符串范围识别器
v3.0.1
2018-11-16 13:42 UTC
Requires
- php: ^7.1.3
- sensio/framework-extra-bundle: ^5.1
- symfony/symfony: ^4.0|^4.1
Requires (Dev)
- phpunit/phpunit: ^7.3
- symfony/phpunit-bridge: ^4.0
README
此Symfony扩展旨在提供简单的从查询字符串中识别序列化组的功能(如果需要,可进行基本的安全性检查)。
安装
1. 使用composer安装
composer require bartlomiejbeta/api-scope-bundle
2. 在AppKernel
中注册bundle
public function registerBundles() { $bundles = array( // ... new BartB\APIScopeBundle\APIScopeBundle(), ); }
3. 在config.yml
中进行配置
api_scope: scopes: api.get_item: #route name always_included: #will be always included to scopes bag - 'first_always_included_group' - 'second_always_included_group' supported_key_map: external1: { internal_name: 'scope.internal_name1'} #if `external1` will be in the query string than `scope.internal_name1` will be in the scopes bag external2: internal_name: 'scope.internal_name2' security: 'can-add-external2-scope' # security voter (check symfony security voter) attribution name (to check if scope can be applied)
使用方法
1. 简单
/** * @ScopeConverter() * @Rest\Route("/api/item", name="api.get_item") */ public function getCarCollection(Request $request, ScopeCollection $scopeCollection): Response { $view = $this->view($scopeCollection, Response::HTTP_OK); $scopesFromQueryString = $scopeCollection->getScopes() return $this->handleView($view); }
示例请求
.../api/item?with[]=external1
示例响应
{"scopes":["first_always_included_group","second_always_included_group","scope.internal_name1"]}
2. 已配置
/** * @ScopeConverter(value="scopes",queryString="scope") * @Rest\Route("/api/item", name="api.get_item") */ public function getCarCollection(Request $request, ScopeCollection $scopes): Response { $view = $this->view($scope,Response::HTTP_OK); scopesFromQueryString = $scopeCollection->getScopes() return $this->handleView($view); }
示例请求
.../api/item?scope[]=external1&scope[]=external2
示例响应
{"scopes":["first_always_included_group","second_always_included_group","scope.internal_name1","scope.internal_name2"]}