yiisoft/data-response

允许以自动转换为 PSR-7 响应的数据进行响应

2.1.0 2024-03-03 06:01 UTC

This package is auto-updated.

Last update: 2024-09-18 05:03:15 UTC


README

Yii

Yii 数据响应


Latest Stable Version Total Downloads Build status Code Coverage Mutation testing badge static analysis type-coverage

该包允许以自动转换为 PSR-7 响应的数据进行响应。

要求

  • PHP 8.1 或更高版本。
  • DOM PHP 扩展。

安装

可以使用 Composer 安装此包

composer require yiisoft/data-response

通用用法

该包提供了一个 DataResponseFactory 类,它接受一个 PSR-17 响应工厂,能够创建数据响应。

数据响应包含后续要处理的原始数据。

use Yiisoft\DataResponse\DataResponseFactory;

/**
 * @var Psr\Http\Message\ResponseFactoryInterface $responseFactory
 */

$factory = new DataResponseFactory($responseFactory);
$dataResponse = $factory->createResponse('test');
$dataResponse
    ->getBody()
    ->rewind();

echo $dataResponse
    ->getBody()
    ->getContents(); // "test"

格式化程序

格式化程序的作用是将数据响应格式化。在以下示例中,我们将数据格式化为 JSON。

use Yiisoft\DataResponse\DataResponseFactory;
use Yiisoft\DataResponse\Formatter\JsonDataResponseFormatter;

/**
 * @var Psr\Http\Message\ResponseFactoryInterface $responseFactory
 */

$factory = new DataResponseFactory($responseFactory);
$dataResponse = $factory->createResponse('test');
$dataResponse = $dataResponse->withResponseFormatter(new JsonDataResponseFormatter());
$dataResponse
    ->getBody()
    ->rewind();

echo $dataResponse->getHeader('Content-Type'); // ["application/json; charset=UTF-8"]
echo $dataResponse
    ->getBody()
    ->getContents(); // "test"

以下格式化程序可用:

  • HtmlDataResponseFormatter
  • JsonDataResponseFormatter
  • XmlDataResponseFormatter
  • PlainTextDataResponseFormatter

中间件

该包提供了一个能够格式化数据响应的 PSR-15 中间件。

use Yiisoft\DataResponse\Middleware\FormatDataResponse;
use Yiisoft\DataResponse\Formatter\JsonDataResponseFormatter;

$middleware = (new FormatDataResponse(new JsonDataResponseFormatter()));
//$middleware->process($request, $handler);

此外,该包还提供了用于内容协商的 PSR-15 中间件

use Yiisoft\DataResponse\Formatter\HtmlDataResponseFormatter;
use Yiisoft\DataResponse\Formatter\XmlDataResponseFormatter;
use Yiisoft\DataResponse\Formatter\JsonDataResponseFormatter;
use Yiisoft\DataResponse\Middleware\ContentNegotiator;

$middleware = new ContentNegotiator([
    'text/html' => new HtmlDataResponseFormatter(),
    'application/xml' => new XmlDataResponseFormatter(),
    'application/json' => new JsonDataResponseFormatter(),
]);

您可以使用 withContentFormatters() 方法覆盖中间件

$middleware->withContentFormatters([
    'application/xml' => new XmlDataResponseFormatter(),
    'application/json' => new JsonDataResponseFormatter(),
]);

文档

如果您需要帮助或有问题,您可以访问 Yii 论坛。您还可以查看其他 Yii 社区资源

许可

Yii 数据响应是自由软件。它根据 BSD 许可协议发布。有关更多信息,请参阅 LICENSE

Yii Software 维护。

支持项目

Open Collective

关注更新

Official website Twitter Telegram Facebook Slack