All Projects → mtownsend5512 → Response Xml

mtownsend5512 / Response Xml

Licence: mit
The missing XML support for Laravel's Response class.

Projects that are alternatives of or similar to Response Xml

Bigbluebutton
Package that provides easily communicate between bigbluebutton server and laravel framework
Stars: ✭ 85 (+51.79%)
Mutual labels:  api, laravel, laravel-package
Dark Sky Api
PHP Library for the Dark Sky API.
Stars: ✭ 70 (+25%)
Mutual labels:  api, laravel, laravel-package
Laravel Compass
A REST client inside your Laravel app
Stars: ✭ 1,002 (+1689.29%)
Mutual labels:  api, laravel, laravel-package
Laravel Api Explorer
API explorer for laravel applications
Stars: ✭ 138 (+146.43%)
Mutual labels:  api, laravel, laravel-package
Lara Eye
Filter your Query\Builder using a structured query language
Stars: ✭ 39 (-30.36%)
Mutual labels:  api, laravel
Api Tester
API tester for laravel-admin
Stars: ✭ 38 (-32.14%)
Mutual labels:  api, laravel
Builder
Prepare your Laravel apps incredibly fast, with various commands, services, facades and boilerplates.
Stars: ✭ 1,009 (+1701.79%)
Mutual labels:  api, laravel
Cursor Pagination
Cursor pagination for your Laravel API
Stars: ✭ 47 (-16.07%)
Mutual labels:  api, laravel
Cms
Statamic 3: The Core Composer Package
Stars: ✭ 965 (+1623.21%)
Mutual labels:  laravel, laravel-package
Laravel Settings
Simple Settings package for a laravel application
Stars: ✭ 45 (-19.64%)
Mutual labels:  laravel, laravel-package
Framework
An eCommerce administration built with Laravel 7 for create and manage online shop with multi-vendor.
Stars: ✭ 56 (+0%)
Mutual labels:  laravel, laravel-package
Laravel Qrcode Ecommerce
This is a complete laravel project that handles qrcodes, payments, api/microservices, and ecommerce
Stars: ✭ 36 (-35.71%)
Mutual labels:  laravel, laravel-package
Laravel Weather
🌤️ A wrapper around Open Weather Map API (Current weather)
Stars: ✭ 36 (-35.71%)
Mutual labels:  laravel, laravel-package
Laravel Async
Package provide simple way to run code asynchronously for your Laravel application.
Stars: ✭ 49 (-12.5%)
Mutual labels:  laravel, laravel-package
Laravel Response Macros
Extra response macro's for Laravel
Stars: ✭ 35 (-37.5%)
Mutual labels:  laravel, response
History Tracker
Laravel Model history tracking made easy
Stars: ✭ 46 (-17.86%)
Mutual labels:  laravel, laravel-package
Laravel Multilang
Package to integrate multi language (multi locale) functionality in Laravel 5.x.
Stars: ✭ 47 (-16.07%)
Mutual labels:  laravel, laravel-package
Laravel Heartbeat
Periodically schedule a job to send a heartbeat to a monitoring system.
Stars: ✭ 49 (-12.5%)
Mutual labels:  laravel, laravel-package
Larapi
💛 Modern API development in Laravel.
Stars: ✭ 54 (-3.57%)
Mutual labels:  laravel, laravel-package
Laravel Jwt
Laravel with JWT Authentication for API development
Stars: ✭ 31 (-44.64%)
Mutual labels:  api, laravel

The missing XML support for Laravel's Response class.

This package is designed to work with the Laravel framework.

Installation

Install via composer:

composer require mtownsend/response-xml

Registering the service provider

For Laravel 5.4 and lower, add the following line to your config/app.php:

/*
 * Package Service Providers...
 */
Mtownsend\ResponseXml\Providers\ResponseXmlServiceProvider::class,

For Laravel 5.5 and greater, the package will auto register the provider for you.

Using Lumen

To register the service provider, add the following line to app/bootstrap/app.php:

$app->register(Mtownsend\ResponseXml\Providers\ResponseXmlServiceProvider::class);

Quick start

Respond with xml

$data = [
    'status' => 'success',
    'data' => [
        'first_name' => 'John',
        'last_name' => 'Smith',
    ]
];
return response()->xml($data);

// Returns:
<?xml version="1.0"?>
<response>
    <status>success</status>
    <data>
        <first_name>John</first_name>
        <last_name>Smith</last_name>
    </data>
</response>

Respond with xml from a collection or eloquent query

You may also pass a collection to be transformed into xml.

return response()->xml(User::all());

Respond with existing xml

If you already have xml, you can pass it to the xml method to respond.

$xml = <<<XML
<?xml version="1.0"?>
<response>
    <status>success</status>
    <data>
        <first_name>John</first_name>
        <last_name>Smith</last_name>
    </data>
</response>
XML;
return response()->xml($xml);

Respond with the request's preferred format (xml/json)

If you want to respond with either xml or json on the fly without writing if/else statements you may use the ->preferredFormat() method. This will take the request's Accept header and try to determine which format the request wants to be served. If this header is nonexistent, it will default to json. Note: when using this method, it will automatically set your response's Content-Type header to match the request's Accept header.

$data = [
    'status' => 'success',
    'data' => [
        'first_name' => 'John',
        'last_name' => 'Smith',
    ]
];
return response()->preferredFormat($data);

Methods and arguments

Response method

->xml($xml, $status = 200, array $headers = [], $xmlRoot = 'response', $encoding = null)

The $xml argument is the data you want to be transformed into xml (may also be a premade xml string).

$status is the http code your response will send.

$headers is an array of key/values of http headers your response will return. A default header of Content-Type: application/xml is automatically applied, but can be overwritten.

$xmlRoot will change the root xml element. Default is response.

$encoding is a string of xml charset encoding declaration. Default is null.

Response method

->preferredFormat($data, $status = 200, array $headers = [], $xmlRoot = 'response', $encoding = null)

See ->xml() method arguments.

The only difference between this method and ->xml() is $data can potentially be transformed to json and $xmlRoot will be ignored if the response is json.

Purpose

Have you ever found yourself wishing Laravel offered the same exemplary support for returning XML responses as it does for JSON? Imagine you are creating an api platform and want to be inclusive of other apps that would prefer to make XML requests to your application - sometimes the reasons are more than preferential. Wouldn't it be a dream if you could return XML as simply as writing return response()->xml($data); and it just worked? Now you can!

This package achieves one critical goal: respond with XML as easily as you can with JSON in your Laravel application.

Other packages you may be interested in

Credits

Testing

You can run the tests with:

./vendor/bin/phpunit

License

The MIT License (MIT). Please see License File for more information.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].