ptournet / laravel-multiformat
Multiformat Endpoints in Laravel
v1.1.1
2020-08-10 18:40 UTC
Requires
- php: >=5.4
- laravel/framework: >=5.6
Requires (Dev)
- orchestra/testbench: ^3.6
- phpunit/phpunit: ^7.5
This package is auto-updated.
Last update: 2024-10-11 04:37:12 UTC
README
This package allows a single Laravel route to answer with different formats (often HTML and JSON). It is meant to be a drop-in replacement fo the unmaintained package: m1guelpf/laravel-multiformat with new features and compatibility with the latest Laravel versions.
Installation
You can install the package via composer:
composer require ptournet/laravel-multiformat
Usage
<?php /** * Mark a route as 'multiformat' to allow different extensions (html, json, xml, etc.) * * This route will match all of these requests: * /podcasts/4 * /podcasts/4.json * /podcasts/4.html * /podcasts/4.zip */ Route::get('/podcasts/{id}', 'PodcastsController@show')->multiformat(); /** * Use `Request::matchFormat()` to return the right response for the requested format. * * Supports closures to avoid doing unnecessary work, and returns 404 if the * requested format is not supported. * * Will also take into account the `Accept` header if no extension is provided. */ class PodcastsController { public function show($id) { $podcast = Podcast::findOrFail($id); return request()->matchFormat([ 'html' => view('podcasts.show', [ 'podcast' => $podcast, 'episodes' => $podcast->recentEpisodes(5), ]), 'json' => $podcast, 'xml' => function () use ($podcast) { return response($podcast->toXml(), 200, ['Content-Type' => 'text/xml']); } ]); } }
Changelog
Please see CHANGELOG for more information on what has changed recently.
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email ptournet (at sign) gmail.com
instead of using the issue tracker.
Credits
- Adam Wathan for the original gist
- Miguel Piedrafita for the original plugin
- Stefan Bauer who contributed to the original plugin
- All Contributors
License
The MIT License (MIT). Please see License File for more information.