larafun/middleware

一套用于加速Laravel开发过程的中间件集合

dev-master 2019-03-15 10:28 UTC

This package is auto-updated.

Last update: 2024-09-16 03:06:08 UTC


README

Build Status Latest Stable Version License Total Downloads

在多种情况下,Laravel会检查RequestwantsJson()以确定需要构建的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',
            //...
        ]
    ];
}