akrabat/rka-content-type-renderer

根据PSR-7请求的Accept头部,将数组渲染为JSON/XML/HTML PSR-7响应。

2.0 2021-10-06 14:46 UTC

This package is auto-updated.

Last update: 2024-09-19 13:55:47 UTC


README

根据PSR-7请求的Accept头部,将数组(或HAL对象)渲染为JSON/XML/HTML PSR-7响应。

Build status

安装

composer require akrabat/rka-content-type-renderer

用法

// given:
// $request instanceof Psr\Http\Message\RequestInterface
// $response instanceof Psr\Http\Message\ResponseInterface

$data = [
    'items' => [
        [
            'name' => 'Alex',
            'is_admin' => true,
        ],
        [
            'name' => 'Robin',
            'is_admin' => false,
        ],
    ],
];
$renderer = new RKA\ContentTypeRenderer\Renderer();
$response  = $renderer->render($request, $response, $data);
return $response->withStatus(200);

构造函数接受一个名为 $pretty 的参数,默认为 true。设置为 false 可禁用美化打印。

HalRenderer

此组件还支持使用 HalRenderernocarrier/hal 对象。

$hal = new Nocarrier\Hal(
    '/foo',
    [
        'items' => [
            [
                'name' => 'Alex',
                'is_admin' => true,
            ],
            [
                'name' => 'Robin',
                'is_admin' => false,
            ],
        ],
    ]
);
$renderer = new RKA\ContentTypeRenderer\HalRenderer();
$response  = $renderer->render($request, $response, $hal);
return $response->withStatus(200);

ApiRenderer

此组件还支持使用 ApiProblemRenderercrell/ApiProblem 对象。

$problem = new Crell\ApiProblem("Something unexpected happened");
$renderer = new RKA\ContentTypeRenderer\ApiProblemRenderer();
$response  = $renderer->render($request, $response, $problem);
return $response->withStatus(500);

对象数组

如果您有一个对象数组,只要这些对象实现了PHP的JsonSerializable接口,渲染器仍然可以正常工作。

测试

  • 代码风格: $ phpcs
  • 单元测试: $ phpunit
  • 代码覆盖率: $ phpunit --coverage-html ./build