dkx / json-api-middleware
该包已被废弃,不再维护。未建议替代包。
Json api 中间件
3.2.1
2019-12-09 09:59 UTC
Requires
- php: ^7.3
- dkx/json-api: ^2.0.1
- dkx/paginator: ^0.2.1
- dkx/wrapped-http-response: ^2.0.0
- nette/utils: ^3.0
- psr/http-message: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: ^0.11.8
- phpstan/phpstan-strict-rules: ^0.11.1
README
json api 的中间件。
基于 dkx/json-api。
安装
$ composer require dkx/json-api-middleware
使用方法
<?php
use DKX\JsonApi\Manager;
use DKX\JsonApiMiddleware\JsonApiMiddleware;
$manager = new Manager;
$middleware = new JsonApiMiddleware($manager, 'include');
示例控制器(Slim)
<?php
use DKX\JsonApiMiddleware\ItemResponse;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Message\ResponseInterface;
class DetailBookController
{
public function __invoke(ServerRequestInterface $request, ResponseInterface $response, array $args): ResponseInterface
{
$book = loadBookById($args['id']);
return new ItemResponse($response, $book);
}
}
或者,当你需要转换一个项目数组时,可以直接使用 DKX\JsonApiMiddleware\CollectionResponse
。
分页
对于少量数据,使用 CollectionResponse
很容易,但对于大量数据,你应该使用分页。
这个库与 dkx/paginator 一起工作。
<?php
use DKX\JsonApiMiddleware\PaginatedResponse;
use DKX\Paginator\PaginatedData;
$currentPage = 1;
$itemsPerPage = 20;
$paginator = $paginatorFactory->create($totalCount, $currentPage);
$totalCount = getAllBooksCount();
$books = loadAllBooksWithPaginator($paginator);
$data = new PaginatedData($paginator, $books);
$response = new PaginatedResponse($response, $data);