eoneopay / apiformats
Package for working with API requests and responses in different formats
Installs: 2 238
Dependents: 4
Suggesters: 0
Security: 0
Stars: 3
Watchers: 6
Forks: 1
Open Issues: 0
Type:package
Requires
- php: >=7.1
- ext-json: *
- doctrine/inflector: ^1.3
- eoneopay/utils: ^0.2.0
- league/fractal: ^0.17.0
- symfony/psr-http-message-bridge: ^1.0
- woohoolabs/yang: ^1.4
- zendframework/zend-diactoros: ^2.1
Requires (Dev)
- eoneopay/standards: dev-master
- illuminate/http: ^5.8
- illuminate/support: ^5.8
- laravel/lumen-framework: ^5.8
- phpmd/phpmd: ^2.6
- phpstan/phpstan: ^0.11.0
- phpstan/phpstan-phpunit: ^0.11.0
- phpstan/phpstan-strict-rules: ^0.11.0
- phpunit/phpunit: ^7.0
- roave/security-advisories: dev-master
- sebastian/phpcpd: ^4.0
- squizlabs/php_codesniffer: ^3.0
- vlucas/phpdotenv: ^3.0
Suggests
- illuminate/http: To use the Laravel implementation
- illuminate/support: To use Laravel service provider
Provides
This package is auto-updated.
Last update: 2019-11-10 23:49:57 UTC
README
Installation
Use Composer to install the package in your project:
composer require eoneopay/apiformats
Formats
By default the package handle JSON (application/json) and XML (application/xml, text/xml) formats.
If you want to handle different formats or want to implement your own JSON/XML encoding logic, the only thing
you need to do is creating your encoder implementing \EoneoPay\ApiFormats\Interfaces\RequestEncoderInterface
and
tell the package to use it, with which Mime types as explained in the Configuration section.
Integration
Laravel
To integrate the package into your Laravel or Lumen you need to register the following service provider and middleware:
- ServiceProvider:
\EoneoPay\ApiFormats\Bridge\Laravel\Providers\ApiFormatsServiceProvider
- Middleware:
\EoneoPay\ApiFormats\Bridge\Laravel\Middlewares\ApiFormatsMiddleware
That's it! Your application is now able to easily receive requests and generate responses in several formats.
Formatted Api Response
If you want to customise the generated response as its status code or headers without handling
body encoding yourself, the package provides the \EoneoPay\ApiFormats\Bridge\Laravel\Responses\FormattedApiResponse
object you can return from your controllers/middlewares. The FormattedApiResponse
accept three parameters through its
constructor as following:
- $content (mixed): array or object able to be cast as an array
- $statusCode (int): status code of response, default as 200
- $headers (array): headers of response, default as empty array
Configuration
The philosophy of the package is to map encoders to a list of MIME types that they can handle through an array as following:
$formats = [ <RequestEncoderInterface> => [<mime_type>, <mime_type>, ...] ];
Each MIME type can be the exact name as application/json
or a Regex
used to match multiple MIME types as application/vnd.eoneopay.v[0-9]+\+json
.
Laravel
To configure supported formats in your application, create a api-formats.php
config file with a formats
array using the encoders class as key and array of associated Mime types as value:
// config/api-formats.php return [ 'formats' => [ JsonRequestEncoder::class => ['application/json'], XmlRequestEncoder::class => ['(application|text)/xml'], YourCustomerEncoder::class => ['you-custom-mime-type'] ] ];