m1guelpf / laravel-multiformat
Multiformat Endpoints in Laravel
Fund package maintenance!
m1guelpf
Installs: 1 394
Dependents: 0
Suggesters: 0
Security: 0
Stars: 39
Watchers: 3
Forks: 1
Open Issues: 1
Requires
- php: ^7.1
Requires (Dev)
- larapack/dd: ^1.0
This package is auto-updated.
Last update: 2024-11-23 06:06:08 UTC
README
Installation
You can install the package via composer:
composer require m1guelpf/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::match()` 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()->match([ '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']); } ]); } }
Contributing
Please see CONTRIBUTING for details.
Security
If you discover any security related issues, please email soy@miguelpiedrafita.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.