Response
Installation
Qubus\Http\Request, Qubus\Http\Response, and Qubus\Http\ServerRequest are all wrappers for laminas-diactoros. Check out diactoros's documentation on its api and usage. Those classes provide an object-oriented way to interact with HTTP requests and responses.
Response
A response is an HTTP message a client receives from a server after sending an HTTP request message. Like Request and ServerRequest, responses are immutable. Qubus\Http\Response is a wrapper around a Psr\Http\Message\ResponseInterface implementation. Any methods that would change state — those prefixed with with and without — all return a new instance with the changes requested.
<?php
use Qubus\Http\Response;
$response = new Response(body: 'Content', status: '200', headers: ['content-type' => 'text/html']);
HtmlResponse and JsonResponse
The most common use case in server-side applications for generating responses is to provide a string to use for the response, typically HTML or data to serialize as JSON. Qubus\Http\Factories\HtmlResponseFactory and Qubus\Http\Factories\JsonResponseFactory exist to facilitate these use cases:
<?php
$htmlResponse = HtmlResponseFactory::create($html);
$jsonResponse = JsonResponseFactory::create($data);
In the first example, you will receive a response with a stream containing the HTML; additionally, the Content-Type header will be set to text/html. In the second case, the stream will contain a stream containing the JSON-serialized $data, and have a Content-Type header set to application/json.
Both objects allow passing the HTTP status, and any headers you want to specify, including the Content-Type header:
<?php
$htmlResponse = HtmlResponseFactory::create($html, 404, [
'Content-Type' => [ 'application/xhtml+xml' ],
]);
$jsonResponse = JsonResponseFactory::create($data, 422, [
'Content-Type' => [ 'application/problem+json' ],
]);