All Projects → yiisoft → data-response

yiisoft / data-response

Licence: BSD-3-Clause license
www.yiiframework.com/

Programming Languages

PHP
23972 projects - #3 most used programming language

Projects that are alternatives of or similar to data-response

Alertjs
Dialog Builder allows you to create fully customisable dialogs and popups in Dynamics 365.
Stars: ✭ 80 (+566.67%)
Mutual labels:  response
Shcheck
A basic tool to check security headers of a website
Stars: ✭ 160 (+1233.33%)
Mutual labels:  response
chronosjs
JS Channels (Events / Commands / Reqest-Response / Courier) Mechanism
Stars: ✭ 35 (+191.67%)
Mutual labels:  response
Php Fetch
A simple, type-safe, zero dependency port of the javascript fetch WebApi for PHP
Stars: ✭ 95 (+691.67%)
Mutual labels:  response
Holen
Declarative fetch for React
Stars: ✭ 152 (+1166.67%)
Mutual labels:  response
Deeputteranceaggregation
Modeling Multi-turn Conversation with Deep Utterance Aggregation (COLING 2018)
Stars: ✭ 171 (+1325%)
Mutual labels:  response
Multiformat Response Objects
Response objects for handling multiple response formats within the one controller
Stars: ✭ 59 (+391.67%)
Mutual labels:  response
db-redis
Yii DBAL Redis connection
Stars: ✭ 14 (+16.67%)
Mutual labels:  yii3
Siem
SIEM Tactics, Techiques, and Procedures
Stars: ✭ 157 (+1208.33%)
Mutual labels:  response
reqres
Powerful classes for http requests and responses
Stars: ✭ 36 (+200%)
Mutual labels:  response
Kitura Net
Kitura networking
Stars: ✭ 98 (+716.67%)
Mutual labels:  response
Netclient Ios
Versatile HTTP Networking in Swift
Stars: ✭ 117 (+875%)
Mutual labels:  response
Renderer
Simple, lightweight and faster response (JSON, JSONP, XML, YAML, HTML, File) rendering package for Go
Stars: ✭ 220 (+1733.33%)
Mutual labels:  response
Response
Monzo's real-time incident response and reporting tool ⚡️
Stars: ✭ 1,252 (+10333.33%)
Mutual labels:  response
html
HTML templating and streaming response library for Service Worker-like environments such as Cloudflare Workers.
Stars: ✭ 41 (+241.67%)
Mutual labels:  response
Aura.http
HTTP Request and Response tools
Stars: ✭ 69 (+475%)
Mutual labels:  response
Examples
Examples of Mock Service Worker usage with various frameworks and libraries.
Stars: ✭ 163 (+1258.33%)
Mutual labels:  response
data
Data providers
Stars: ✭ 31 (+158.33%)
Mutual labels:  yii3
yii-debug
Yii debug panel extension
Stars: ✭ 23 (+91.67%)
Mutual labels:  yii3
Nativepopup
Clone of Apple iOS App's feedback popup, and easily customizable.
Stars: ✭ 247 (+1958.33%)
Mutual labels:  response

Yii Data Response


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

The package allows responding with data that is automatically converted into PSR-7 response.

Requirements

  • PHP 7.4 or higher.
  • JSON PHP extension.
  • DOM PHP extension.

Installation

The package could be installed via composer:

composer require yiisoft/data-response --prefer-dist

General usage

The package provides DataResponseFactory class that, given a PSR-17 response factory, is able to create data response.

Data response contains raw data to be processed later.

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"

Formatters

Formatter purpose is to format a data response. In the following example we format data as 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"

The following formatters are available:

  • HtmlDataResponseFormatter
  • JsonDataResponseFormatter
  • XmlDataResponseFormatter

Middleware

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(),
]);

Testing

Unit testing

The package is tested with PHPUnit. To run tests:

./vendor/bin/phpunit

Mutation testing

The package tests are checked with Infection mutation framework with Infection Static Analysis Plugin. To run it:

./vendor/bin/roave-infection-static-analysis-plugin

Static analysis

The code is statically analyzed with Psalm. To run static analysis:

./vendor/bin/psalm

License

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.

Support the project

Open Collective

Follow updates

Official website Twitter Telegram Facebook Slack

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].