Swoft速学:中间件 Middleware

本文围绕Swoft框架中间件展开,介绍其用于控制请求和响应流程,可对请求过滤验证处理。还说明了创建中间件时需打注解并在实现方法中添加响应头内容,使用时在控制器打注解,同时给出相关文档参考地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文档地址:
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控制器,看看响应头信息:
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值