larafun / middleware
一套用于加速Laravel开发过程的中间件集合
Requires
- php: ^7.0
- illuminate/support: ^5.5
Requires (Dev)
- orchestra/database: ^3.5
- orchestra/testbench: ^3.5
- phpunit/phpunit: ^6.0||^7.0
This package is auto-updated.
Last update: 2024-09-16 03:06:08 UTC
README
在多种情况下,Laravel会检查Request
的wantsJson()
以确定需要构建的Response
类型。如果检查未通过,Laravel可能会返回重定向(在ValidationException
的情况下)或一些漂亮的Blade模板(在404 Responses
的情况下)。这些都是非常好的功能,但当您使用Laravel构建JSON API时,您可能希望在API端点被调用时以JSON消息进行响应。
此包提供了一个AcceptJsonMiddleware
,将为所有请求添加application/json
接受头,以便Request::wantsJson()
方法可以验证它。此中间件不会覆盖现有接受头中的媒体类型,但在质量相等的情况下,将确保Request::wantsJson()
可以通过。
安装
需要PHP > 7.0,Laravel > 5.5
composer require larafun/middleware
基本用法
只需将AcceptJsonMiddleware
添加到您的App\Http\Kernel
类中
class Kernel extends HttpKernel { protected $middlewareGroups = [ // ... 'api' => [ 'accept-json', 'throttle:60,1', 'bindings' ] ]; protected $routeMiddleware = [ // ... 'accept-json' => \Larafun\Middleware\AcceptJsonMiddleware::class, ]; }
404未找到
由于404消息是在没有与请求的URL匹配的任何路由时触发的,因此将中间件放置在路由组中不会应用它。如果您还希望将404消息作为JSON处理,您可以使用Laravel Fallback Routes,或将中间件作为Kernel
的$middleware
属性中的第一个条目。
class Kernel extends HttpKernel { protected $middleware = [ \Larafun\Middleware\AcceptJsonMiddleware::class, // ... ]; }
更改质量
在极少数情况下,如果您想为您的application/json
头设置不同的质量,只需将其作为参数传递给您的Kernel
。
class Kernel extends HttpKernel { protected $middlewareGroups = [ // ... 'api' => [ 'accept-json:0.8', //... ] ]; }
您应该知道,HTTP服务器配置可能会添加一些默认接受头,质量为1。在这种情况下,如果您提供较低的质量,则您的设置永远不会生效。为了获得最佳结果,请坚持使用默认质量设置。
现有头
如果请求已经具有application/json
接受头,则此中间件不会覆盖它并保持消费者请求质量。
您可以通过传递字符串作为第二个参数来强制新质量。
class Kernel extends HttpKernel { protected $middlewareGroups = [ // ... 'api' => [ 'accept-json:1,force', //... ] ]; }