您当前的位置: 首页 >  中间件

hyperf 前置中间件 后置中间件

发布时间:2022-09-16 17:01:15 ,浏览量:8

今天碰到一个问题 , 就是正常跑接口 , 我们需要做一些日志 , 当出现慢日志问题进行分析与接口优化 , 于是想到了全局中间件

但是hyperf文档中没有写

Hyperf

 根据这个官方的图示 , 可以看到这是一个洋葱模型 , 也就是说 , 肯定存在后置中间件

执行顺序: Request -> Middleware 1 -> Middleware 2 -> Middleware 3 -> Middleware 2 -> Middleware 1 -> Response

官方demo:
container = $container;
        $this->response = $response;
        $this->request = $request;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        // 根据具体业务判断逻辑走向,这里假设用户携带的token有效
        $isValidToken = true;
        if ($isValidToken) {
            return $handler->handle($request);
        }

        return $this->response->json(
            [
                'code' => -1,
                'data' => [
                    'error' => '中间件验证token无效,阻止继续向下执行',
                ],
            ]
        );
    }
}

 那么 ,后置中间件怎么写呢? 

忙了一会后,成功了

后置中间件
container = $container;
        $this->response = $response;
        $this->request = $request;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        // TODO 前置中间件逻辑

        $response = $handler->handle($request);
        // TODO 后置中间件逻辑


        return $response;
    }
}
 我的demo:
httpRequest->getRequestUri());
        echo "请求参数:" . PHP_EOL;
        var_dump($this->httpRequest->all());
        echo "开始时间:" . $starttime . PHP_EOL;
       
        # 请求结果
        $response = $handler->handle($request);
        $endtime = microtime(true);
        echo "结束时间:" . $endtime . PHP_EOL;
        echo "执行时间:" . ($endtime - $starttime) . PHP_EOL;
        echo "________________________________________________________________________________________________". PHP_EOL;
       
        return $response;
    }
}
关注
打赏
1688896170
查看更多评论

暂无认证

  • 8浏览

    0关注

    115984博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.0453s