The pipeline of your application
The Content Negotiation Middleware contains of one middleware designed to handle format negotiations. It takes the Accept
header and parses it, matches it against the list of supported mime types (registered by serializers) and finally sets the proper Content-Type
header on the response object.
No configuration is needed for this middleware.
See the configuration documentation for more information about how to configure the integration with the Phapi Framework.
The format negotiation middleware sets the proper Content-Type
header on the response object. The header value can be accessed by using the getHeaderLine()
method:
<?php
/*
* Get the response content type header that has the negotiated header.
*
* Returns the header value including charset.
* Example: application/json;charset=utf-8
*/
$mimeType = $response->getHeaderLine('Content-Type');
The middleware also sets the mime type and any parameters included in the accept header as attributes on the request object:
<?php
// Get the negotiated mime type:
$mimeType = $request->getAttribute('Accept');
// Get parameters (as an array) included in the accept header
$acceptParameters = $request->getAttribute('Accept-Parameters');
The middleware will throw a 406 NotAcceptable
if the requested mime type isn't supported. An 500 InternalServerError
is thrown if no serializers are found.
If the requested mime type isn't supported the first mime type in the first registered serializers will be used to serialize the error message sent to the client.