PHP middleware that tries to infer outbound content types and attach appropriate headers.
It's recommended that you use Composer to install swagger-header-middleware.
$ composer require avalanche-development/swagger-header-middleware
swagger-header-middleware requires PHP 5.6 or newer.
This middleware depends on swagger-router-middleware to have a resolved swagger attribute attached to the request object. If it is not found, then all modifications to the response object are skipped. If it is, it will attempt to attach outbound content types.
$header = new AvalancheDevelopment\SwaggerHeaderMiddleware\Header; $result = $header($request, $response, $next); // middleware signature
It is recommended that this is one of the top items in the stack, soon after swagger-router-middleware, and ensure that any sort of header validation is done after this is executed.
This middleware implements LoggerAwareInterface, so feel free to attach your logger for all that logging goodness.
$header = new AvalancheDevelopment\SwaggerHeaderMiddleware\Header; $header->setLogger($logger); ... etc
Again, it depends on a swagger attribute being in the request. If a request object is passed in without it, then everything is skipped. Values are resolved based on the operation and global settings within the spec.
$swagger = $request->getAttribute('swagger'); var_dump($swagger); ... [ 'produces' => [ 'application/json', ], 'consumes' => [ 'application/json', ], ]
If a json string is passed in, then this middleware will automatically attach a
application/json content-type header... only if a header is not already provided. To override this overreaching behavior, simply attach your own header before this is hit.
This library is in active development. Some things are not yet supported (such as detecting non-json header types).
To execute the test suite, you'll need phpunit (and to install package with dev dependencies).
swagger-header-middleware is licensed under the MIT license. See License File for more information.