FastAPI 学习之路(三十)中间件

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
性能测试 PTS,5000VUM额度
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: FastAPI 学习之路(三十)中间件

 什么是中间件呢,"中间件"是一个函数,它在每个请求被特定的路径操作处理之前,以及在每个响应返回之前工作.


  • 它接收你的应用程序的每一个请求.
  • 然后它可以对这个请求做一些事情或者执行任何需要的代码.
  • 然后它将请求传递给应用程序的其他部分 (通过某种路径操作).
  • 然后它获取应用程序生产的响应 (通过某种路径操作).
  • 它可以对该响应做些什么或者执行任何需要的代码.
  • 然后它返回这个 响应.


     那么看下如何创建中间件?

     

要创建中间件你可以在函数的顶部使用装饰器 @app.middleware("http").

中间件参数接收如下参数:

  • request.
  • 一个函数 call_next 它将接收 request 作为参数.
  • 这个函数将 request 传递给相应的 路径操作.
  • 然后它将返回由相应的路径操作生成的 response.
  • 然后你可以在返回 response 前进一步修改它.

   我们看下如何去实现中间件。

import time
from fastapi import FastAPI, Request
app = FastAPI()
@app.middleware("http")
async def add_process_time_header(request: Request, call_next):
    start_time = time.time()
    response = await call_next(request)
    process_time = time.time() - start_time
    response.headers["X-Process-Time"] = str(process_time)
    response.headers['leizishuocceshikaifa']="leizishuoceshikaifa"
    return response
@app.post("/create")
def post():
    return "post"


我们实现一个中间件,

           

   在 response 的前和后 在任何路径操作收到request前,可以添加要和请求一起运行的代码.也可以在响应生成但是返回之前添加代码。


       我们去看下接口输出的结果


image.png


我们看下接口返回的Headers


image.png


我们可以看到,我标记红色的地方,就是我们在请求的中间件中,处理的,默认就给我们返回我们处理后的。

相关文章
|
5月前
|
JSON 中间件 数据处理
实践出真知:通过项目学习Python Web框架的路由与中间件设计
【7月更文挑战第19天】探索Python Web开发,掌握Flask或Django的关键在于理解路由和中间件。路由连接URL与功能,如Flask中@app.route()定义请求响应路径。中间件在请求处理前后执行,提供扩展功能,如日志、认证。通过实践项目,不仅学习理论,还能提升构建高效Web应用的能力。示例代码展示路由定义及模拟中间件行为,强调动手实践的重要性。
60 1
|
7月前
|
缓存 前端开发 安全
Python web框架fastapi中间件的使用,CORS跨域详解
Python web框架fastapi中间件的使用,CORS跨域详解
304 1
|
7月前
|
消息中间件 存储 监控
写了10000字:全面学习RocketMQ中间件
以上是 V 哥在授课时整理的全部 RocketMQ 的内容,在学习时重点要理解其中的含义,正所谓知其然知其所以然,希望这篇文章可以帮助兄弟们搞清楚RocketMQ的来龙去脉,必竟这是一个非常常用的分布式应用的中间件,好了,今天的内容就分享到这,我靠!已经 00:36分,建议收藏起来,慢慢消化,创作不易,喜欢请点赞转发。
1016 0
|
7月前
|
存储 NoSQL 中间件
中间件Redis的学习记录
中间件Redis的学习记录
|
7月前
|
安全 Dubbo Java
[Java 晋级之路] 框架、中间件等领域都在使用,你还不快来学习Java SPI机制?!
[Java 晋级之路] 框架、中间件等领域都在使用,你还不快来学习Java SPI机制?!
|
Java 中间件 API
【分布式技术专题】「Zookeeper中间件」给大家学习一下Zookeeper的”开发伴侣”—Curator-Framework(基础篇)
【分布式技术专题】「Zookeeper中间件」给大家学习一下Zookeeper的”开发伴侣”—Curator-Framework(基础篇)
401 14
【分布式技术专题】「Zookeeper中间件」给大家学习一下Zookeeper的”开发伴侣”—Curator-Framework(基础篇)
|
中间件 开发者
gin框架学习-路由分组和中间件
Logger中间件将日志写入gin.DefaultWriter,即使配置了GIN_MODE=release。
374 9
gin框架学习-路由分组和中间件
|
消息中间件 存储 中间件
MQ 学习日志(九) MQ 中间件的设计思路
如果让你开发一个消息队列中间件,你会怎么设计架构
121 0
|
开发框架 Java 中间件
【中间件】——EJB学习总结
公共服务框架:支持大量的、由应用服务器提供的系统级服务
|
数据采集 存储 缓存
最常用的限流算法以及如何在http中间件中加入流控 | 周末学习
通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理
202 0
下一篇
DataWorks