phapi / middleware-content-negotiation
Content Negotiation Middleware used by the Phapi Framework.
Installs: 3 798
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 1
Open Issues: 0
Requires
- php: >=5.6.0
- phapi/contract: 1.*
- phapi/exception: 1.*
- psr/http-message: 1.*
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- mockery/mockery: 0.9.*
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2021-02-05 22:43:58 UTC
README
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.
Installation
This middleware is by default included in the Phapi Framework but if you need to install it it's available to install via Packagist and Composer.
$ php composer.phar require phapi/middleware-content-negotiation:1.*
Configuration
The middleware itself does not have any configuration options.
See the configuration documentation for more information about how to configure the integration with the Phapi Framework.
Usage
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');
Exceptions
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.
Phapi
This middleware is a Phapi package used by the Phapi Framework. The middleware are also PSR-7 compliant and implements the Phapi Middleware Contract.
License
Content Negotiation Middleware is licensed under the MIT License - see the license.md file for details
Contribute
Contribution, bug fixes etc are always welcome.