Swoft速学:中间件 Middleware

文档地址:
https://doc.swoft.org/master/zh-CN/http-server/middleware.html

中间件是用于控制 请求到达响应请求 的整个流程的,通常用于对请求进行过滤验证处理,当你需要对请求或响应作出对应的修改或处理,或想调整请求处理的流程时均可以使用中间件来实现

1、创建一个中间件App\Middlewares\ProductMiddleware.php

<?php
namespace App\Middlewares;


use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\RequestHandlerInterface;
use Swoft\Http\Message\Middleware\MiddlewareInterface;
use Swoft\Bean\Annotation\Bean;

/**
 * @Bean()
 */
class ProductMiddleware implements MiddlewareInterface
{

    /**
     * Process an incoming server request and return a response, optionally delegating
     * response creation to a handler.
     *
     * @param \Psr\Http\Message\ServerRequestInterface $request
     * @param \Psr\Http\Server\RequestHandlerInterface $handler
     * @return \Psr\Http\Message\ResponseInterface
     */
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $response = $handler->handle($request);
        /**
         * withAddedHeader()方法给响应头添加内容
         */
        return $response->withAddedHeader('Middleware-Action-Test', 'success');
    }
}

从上面代码可以看出 给这个中间件类打上了@Bean()注解;
在实现的process()方法中,给response对象添加了响应头内容。

(更多请求与响应的方法,参考:https://doc.swoft.org/master/zh-CN/http-server/request-response.html)

2、使用中间件

来到我们之前的ProductController控制器中,给该控制器打上@Middleware(class=ProductMiddleware::class)注解。

前面说了中间件是用于控制 请求到达 和 响应请求 的整个流程的,并且在ProductMiddleware这个中间件里加了特殊的响应头内容。

现在我们来访问ProductController控制器,看看响应头信息:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/github_26672553/article/details/82254156