avalanche-development / swagger-header-middleware
Requires
- php: >=5.6.0
- avalanche-development/peel: ^0.3
- psr/http-message: ^1.0
- psr/log: ^1.0
Requires (Dev)
- codeclimate/php-test-reporter: ^0.3
- phpunit/phpunit: ^5.7
This package is not auto-updated.
Last update: 2024-10-26 20:32:20 UTC
README
PHP middleware that tries to infer outbound content types and attach appropriate headers.
Installation
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.
Usage
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.
Interface
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.
Development
This library is in active development. Some things are not yet supported (such as detecting non-json header types).
Tests
To execute the test suite, you'll need phpunit (and to install package with dev dependencies).
$ phpunit
License
swagger-header-middleware is licensed under the MIT license. See License File for more information.