The package allows responding with data that is automatically converted into PSR-7 response.
The package provides DataResponseFactory
class that, given a PSR-17 response factory, is able to create data response. In this example we use nyholm/psr7
pacakge but any PSR-17 response factory would do.
Data response contains raw data to be processed later.
use Nyholm\Psr7\Factory\Psr17Factory;
use Yiisoft\DataResponse\DataResponseFactory;
$factory = new DataResponseFactory(new Psr17Factory());
$dataResponse = $factory->createResponse('test');
$dataResponse->getBody()->rewind();
echo $dataResponse->getBody()->getContents(); //test
Formatter purpose if to format data response. In the following example we format data as JSON.
use Nyholm\Psr7\Factory\Psr17Factory;
use Yiisoft\DataResponse\DataResponseFactory;
use Yiisoft\DataResponse\Formatter\JsonDataResponseFormatter;
$factory = new DataResponseFactory(new Psr17Factory());
$dataResponse = $factory->createResponse('test');
$dataResponse = $dataResponse->withResponseFormatter(new JsonDataResponseFormatter());
$dataResponse->getBody()->rewind();
echo $dataResponse->getHeader('Content-Type'); //application/json
echo $dataResponse->getBody()->getContents(); //"test"
The following formatters are available:
- HtmlDataResponseFormatter
- JsonDataResponseFormatter
- XmlDataResponseFormatter
The package provides a PSR-15 middleware that is able to format a data response.
use Yiisoft\DataResponse\Middleware\FormatDataResponse;
use Yiisoft\DataResponse\Formatter\JsonDataResponseFormatter;
$middleware = (new FormatDataResponse(new JsonDataResponseFormatter()));
//$middleware->process($request, $handler);
Also the package provides PSR-15 middleware for content negotiation
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(),
]);
You can override middlewares with method withContentFormatters
$middleware->withContentFormatters([
'application/xml' => new XmlDataResponseFormatter(),
'application/json' => new JsonDataResponseFormatter(),
]);
The package is tested with PHPUnit. To run tests:
./vendor/bin/phpunit
The package tests are checked with Infection mutation framework. To run it:
./vendor/bin/infection
The code is statically analyzed with Psalm. To run static analysis:
./vendor/bin/psalm
The Data response is free software. It is released under the terms of the BSD License.
Please see LICENSE
for more information.
Maintained by Yii Software.