Laravel注册中间件使用-01

步骤:

1、创建中间件,中间件的定义采用大驼峰命名
2、app/Http/Kernel.php中注册中间件
3、路由中使用中间件做http过滤拦截
4、重启swoole进程(作为web的http服务)
参考文档:
https://learnku.com/docs/laravel/7.x/middleware/7459

实现代码

1、创建ApiAfter中间件

php artisan make:middleware ApiAfter

定义ApiAfter中间件响应请求格式

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\JsonResponse;

class ApiAfter
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        //规定响应请求格式
        //获取next请求之后的响应
        $response = $next($request);
        if (!($response instanceof JsonResponse)) {
            return $response;
        }
        //获取响应数据
        $data = $response->getData();

        if (!is_array($data)) {
            return $response;
        }

        if (!isset($data) || !is_int($data[0]) || !isset($data[1])) {
            return $response->setData([
                'ret' => 500,
                'data' => [],
                'msg' => '数据格式错误'
            ]);
        }

        if ($data[0] === 200) {
            return $response->setData(
                [
                    'ret' => 200,
                    'data' => $data[1],
                    'msg' => ''
                ]
            );
        }

        return $response->setData([
            'ret' => $data[0],
            'data' => [],
            'msg' => $data[1]
        ]);
    }
}


2、app/Http/Kernel.php中注册中间件

protected $routeMiddleware = [
		#此处省略其他中间件
        'apiAfter' => \App\Http\Middleware\ApiAfter::class,
    ];

3、路由中使用中间件做http过滤拦截
测试testapi接口返回格式

Route::middleware('apiAfter')->any('testapi', function(){
        return [200,'成功'];
    });

4、重启swoole进程(作为web的http服务)

php artisan swoole:http stop
php artisan swoole:http start

测试结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39218464/article/details/114922794
今日推荐