anothy / slim-api-wrapper
Slim API 包装器
0.1.4
2017-08-13 01:22 UTC
Requires
- slim/slim: ^3.8
Requires (Dev)
- phpunit/phpunit: ^4.0
- squizlabs/php_codesniffer: ^3.0
This package is not auto-updated.
Last update: 2024-09-29 03:15:31 UTC
README
作为访问 Slim 应用 API 的内部方式。有两种方式访问 API,直接访问(跳过中间件遍历),或使用完整路由(遍历附加到 Slim 应用的中间件)。
安装
使用 Composer 安装。
$ composer require anothy/slim-api-wrapper
用法
设置容器
$container['slim-api-wrapper'] = function (\Slim\Container $c) { return new \Anothy\SlimApiWrapper($c); };
使用 call
方法调用命名路由。
call
方法将跳过中间件的遍历(进入和退出),直接到达 Slim 应用。
$app = new \Slim\App(); $app->get('/books', function ($request, $response, $args) { // Show all books })->setName('api-books'); $slimApiWrapper = $app->getContainer()->get('slim-api-wrapper'); $result = $slimApiWrapper->call('GET', 'api-books', [ 'queryParams' => [ 'page' => 1, ], ]);
上述示例将搜索名为 api-books
的路由,使用 GET
方法,并带有查询字符串 page=1
。
使用 callMiddlewareStack
方法调用命名路由。
callMiddlewareStack
方法将遍历添加到 Slim 应用中的中间件(进入和退出)。
$result = $slimApiWrapper->callMiddlewareStack('GET', 'api-books', [ 'queryParams' => [ 'page' => 1, ], ]);
添加路由模式占位符
如果您的路由有任何模式占位符,您可以在调用中添加 namedArgs
。
$app->get('/books/{id:[0-9]+}', function ($request, $response, $args) { // Show all books by `id` })->setName('api-books-by-id'); $result = $slimApiWrapper->call('GET', 'api-books-by-id', [ 'namedArgs' => [ 'id' => 1234, ], ]);
上述调用相当于执行 GET /books/1234
。
添加额外的头部
以下是一个使用命名路由 api-books
的示例,该路由需要授权头部。添加了具有 HTTP_AUTHORIZATION
键和值的 headers
选项。值是 OAuth 令牌。
$result = $slimApiWrapper->call('GET', 'api-books', [ 'headers' => [ 'HTTP_AUTHORIZATION' => 'Bearer ' . $token, ], 'queryParams' => [ 'page' => 1, ], ]);
添加请求体(正文)到请求
$result = $slimApiWrapper->call('POST', 'api-books-post', [ 'headers' => [ 'HTTP_AUTHORIZATION' => 'Bearer ' . $token, ], 'payload' => [ 'name' => 'The Name of the Wind', 'author' => 'Patrick Rothfuss', ], ]);
这将在请求体中将 payload
添加为 JSON 字符串。