anothy/slim-api-wrapper

Slim API 包装器

0.1.4 2017-08-13 01:22 UTC

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 字符串。