New

Just launched: Vueblocks, a brand-new search engine for Vue packages! Explore Vueblocks →

eonx-com/apiformats

Package for working with API requests and responses in different formats
55,232 3
Install
composer require eonx-com/apiformats
Latest Version:v1.0.6
PHP:>=7.1
License:BSD-3-Clause
Last Updated:Apr 29, 2021
Links: GitHub  ·  Packagist
Maintainer: eonx

API Formats

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']
    ]
]; 

Related Packages

railken/lara-eye
38,923 38
api
juampi92/api-resources

Manage your resources maintaining API versioning

934,433 111
tailflow/laravel-orion

Orion for Laravel allows you to build a fully featured REST API based on your El...

803,682 1,592
unlu/laravel-api-query-builder

Laravel API Query Builder Package.

720,455 329
juampi92/phecks

A package to run custom PHP checks

411,123 4

Version History

Version Released PHP License
v1.0.6 >=7.1 BSD-3-Clause
v1.0.5 >=7.1 BSD-3-Clause
v1.0.4 >=7.1 BSD-3-Clause
v1.0.3 >=7.1 BSD-3-Clause
v1.0.2 >=7.1 BSD-3-Clause