当前位置: 首页 > article >正文

一文搞懂 Spring Cloud:从入门到实战的微服务全景指南(建议收藏)蜗

一、中间件是啥咱用“餐厅”打个比方想象一下你的FastAPI应用是个高级餐厅。?? 顾客客户端请求来到门口。- 迎宾CORS中间件先看你是不是从允许的街区域名来的不是就直接劝退返回CORS错误。- 领位员日志中间件记下顾客几点来的、几个人。- 安检认证中间件检查你有没有预约码Token。?? 之后顾客才能见到真正的厨师你的路径操作函数点菜吃饭处理业务逻辑。?? 吃完离开时还得经过传菜员响应处理中间件可能给打包盒贴个标签添加响应头。这一系列站在“核心业务”前后的服务人员就是中间件。它的核心价值在于全局处理、业务无侵入。官方文档讲得比较散咱们今天就把这块硬骨头啃透直接上代码。?? 二、核心怎么用从最常用的CORS开始好咱们先来解决开头的“跨域”问题。这是99%的Web应用都会遇到的。from fastapi import FastAPIfrom fastapi.middleware.cors import CORSMiddlewareapp FastAPI()# 1. 配置允许的源、方法、请求头origins [http://localhost:3000, # 你的前端开发地址https://your-production-site.com,]# 2. 添加中间件app.add_middleware(CORSMiddleware,allow_originsorigins, # 允许的源列表也可以用 [*] 放行所有不安全allow_credentialsTrue, # 允许携带Cookieallow_methods[*], # 允许所有方法 (GET, POST, 等)allow_headers[*], # 允许所有请求头)app.get(/)async def main():return {message: Hello World}这里千万别学我当初偷懒图省事直接上 allow_origins[*]这在生产环境是安全大忌相当于餐厅大门敞开谁都能进。线上务必明确指定前端域名?? 三、动手写一个自己的中间件接下来重点来了自定义中间件。比如我们要给每个请求记日志并计算处理耗时。import timefrom fastapi import FastAPI, Requestapp FastAPI()app.middleware(http) # 这是关键装饰器async def log_request_time(request: Request, call_next):# 1. 请求进来时# 这里我们使用 time.perf_counter() 而不是 time.time()因为它对于这些用例可能更精确start_time time.perf_counter()path request.url.pathmethod request.methodprint(f?? 收到请求: {method} {path})# 2. 把请求交给下一个处理环节可能是其他中间件或者是最终的路由response await call_next(request)# 3. 响应返回前process_time time.perf_counter() - start_timeresponse.headers[X-Process-Time] str(process_time) # 可以往响应头加东西print(f? 请求完成: {method} {path}, 耗时: {process_time:.4f}秒)return responseapp.get(/test)async def test():return {message: ok}访问 /test看看控制台是不是日志和响应头都有了这就是一个最基础的HTTP中间件。划重点 中间件函数接收一个 call_next它就像接力棒你必须调用它await call_next(request)请求才能继续往后走。你在它前面和后面写的代码就分别对应了“请求处理”和“响应处理”两个阶段。?? 四、灵魂拷问多个中间件谁先谁后你是不是以为加完就完事了多个中间件的执行顺序是超级易错点想象一下你既加了CORS中间件又加了上面的日志中间件还加了一个认证中间件。它们怎么排队结论按照添加的相反顺序执行“请求阶段”再按照添加的正序执行“响应阶段”。 像洋葱一样一层层进去再一层层出来。app FastAPI()# 假设我们按顺序添加三个中间件app.add_middleware(MiddlewareC) # 第三个添加app.add_middleware(MiddlewareB) # 第二个添加app.middleware(http)(middleware_a) # 第一个添加装饰器写法# 实际执行顺序请求阶段# 1. middleware_a 的请求处理代码# 2. MiddlewareB 的请求处理代码# 3. MiddlewareC 的请求处理代码# --- 到达路由函数 ---# 4. MiddlewareC 的响应处理代码# 5. MiddlewareB 的响应处理代码# 6. middleware_a 的响应处理代码# --- 响应返回给客户端 ---官方文档虽然说了是“装饰器顺序”但用 app.add_middleware() 添加时更容易迷糊。记不住就背下这个口诀“后来居上请求原路返回响应”。 设计时要把依赖关系想清楚比如认证应该放在靠“里”层后添加日志可以放在最“外”层先添加。?? 五、进阶更底层的ASGI中间件再说个容易翻车的点。上面我们用 app.middleware(http) 叫HTTP中间件是FastAPI封装好的。还有一种更底层、更强大的叫ASGI中间件。它和HTTP中间件啥区别好比一个是高级餐厅的固定流程HTTP另一个是后厨的原子操作ASGI能处理WebSocket等更多协议。怎么用通常你需要一个第三方库比如 starlette-context 来在请求中传递全局数据或者自己封装FastAPI在fastapi.middleware中提供了几个中间件仅仅是为了方便开发者但大多数可用的中间件直接来自Starlettefrom fastapi import FastAPIfrom starlette.middleware.base import BaseHTTPMiddlewareclass CustomHeaderMiddleware(BaseHTTPMiddleware):async def dispatch(self, request, call_next):response await call_next(request)response.headers[X-Custom-Header] MyValuereturn responseapp FastAPI()app.add_middleware(CustomHeaderMiddleware) # 这里添加的就是ASGI中间件注意 BaseHTTPMiddleware 使用简单但官方提示可能有轻微性能损耗因为每个请求都会创建新的类实例。对于超高并发场景用之前的函数式 app.middleware(http) 或直接写纯ASGI中间件是更优解。??脚竟咐馁

相关文章:

一文搞懂 Spring Cloud:从入门到实战的微服务全景指南(建议收藏)蜗

一、中间件是啥?咱用“餐厅”打个比方 想象一下,你的FastAPI应用是个高级餐厅。 ?? 顾客(客户端请求)来到门口。- 迎宾(CORS中间件):先看你是不是从允许的街区(域名)来…...

2026届最火的六大AI辅助写作工具实际效果

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下的学术环境当中,AI论文网站给研究者供给高效的辅助工具,这类平…...

Burpsuite之暴力破解+验证码识别 | 添柴不加火敢

springboot自动配置 自动配置了大量组件,配置信息可以在application.properties文件中修改。 当添加了特定的Starter POM后,springboot会根据类路径上的jar包来自动配置bean(比如:springboot发现类路径上的MyBatis相关类&#xff…...

你的终端神器之Oh My Zsh吭

1.安装环境准备 1.1.查看物理内存 [rootaiserver ~]# free -m 1.2.操作系统版本 [rootaiserver ~]# cat /etc/redhat-release 1.3.操作系统内存 [rootaiserver ~]# df -h /dev/shm/ 1.4.磁盘空间 [rootaiserver ~]# df -TH [rootaiserver ~]# df -h /tmp/ [rootaiserver ~]# d…...

2026届最火的五大降AI率助手实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于内容创作范畴之中,将AI生成的痕迹予以降低,此即降AI率&#xff0c…...

精益目视设计全指南 | 2026工厂目视化从0到1全流程(第一弹)

2026 年,精益生产早已成为制造企业降本增效、规范管理的核心抓手,而精益目视设计(精益目视化设计),正是精益生产、5S/6S 管理、TPM 设备管理落地的核心载体,被称为现场管理的 “无声管理者”。但绝大多数工…...

【快速EI检索 | SPIE出版】2026通信系统与通信网络国际学术会议(CSACN 2026)

2026通信系统与通信网络国际学术会议(CSACN 2026) 2026 International Conference on Communication Systems and Networks 2026年5月15-17日 | 中国-西双版纳 大会官网:https://www.iccsacn.org/ 截稿时间:见官网&#xff0…...

突破学术资源获取壁垒:Unpaywall开源工具全解析

突破学术资源获取壁垒:Unpaywall开源工具全解析 【免费下载链接】unpaywall-extension Firefox/Chrome extension that gives you a link to a free PDF when you view scholarly articles 项目地址: https://gitcode.com/gh_mirrors/un/unpaywall-extension …...

3步实现QQ空间历史记录本地存储:面向普通用户的数据备份工具使用指南

3步实现QQ空间历史记录本地存储:面向普通用户的数据备份工具使用指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 问题场景:那些正在消失的数字记忆 2023年某…...

【系统架构师-案例题-分布式数据缓存架构】22年下(3)分布式仓储货物管理系统

一、完整题目 【说明】 某大型电商平台建立了一个在线B2B商店系统,并在全国多地建设了货物仓储中心,通过提前备货的方式来提高货物的运送效率。但是在运营过程中,发现会出现很多跨仓储中心调货从而延误货物运送的情况。为此,该企业…...

开源能源管理实战指南:从零开始掌握OpenEMS系统应用

开源能源管理实战指南:从零开始掌握OpenEMS系统应用 【免费下载链接】openems OpenEMS - Open Source Energy Management System 项目地址: https://gitcode.com/gh_mirrors/op/openems OpenEMS(开源能源管理系统)作为一款模块化的能源…...

使用Microsoft Agent Framework构建C# AI代理握

简介 langchain中提供的chain链组件,能够帮助我门快速的实现各个组件的流水线式的调用,和模型的问答 Chain链的组成 根据查阅的资料,langchain的chain链结构如下: $$Input \rightarrow Prompt \rightarrow Model \rightarrow Outp…...

L型热收缩包装机选型:产业集群优势下的自动化包装方案解析

一、行业包装自动化的关键挑战在现代化生产体系中,包装环节正面临多维度的效率压力。传统纸箱包装不仅材料成本居高不下,仓储空间占用问题也日益突出。更为关键的是,手工包装速度难以匹配高速生产线的产出节奏,这种产能不匹配现象…...

AI开发-python-langchain框架(--串行流程 )悼

一、前言:什么是 OFA VQA 模型? OFA(One For All)是字节跳动提出的多模态预训练模型,支持视觉问答、图像描述、图像编辑等多种任务,其中视觉问答(VQA)是最常用的功能之一——输入一张…...

实测Z-Image-Turbo_UI界面:生成效果展示与使用技巧分享

实测Z-Image-Turbo_UI界面:生成效果展示与使用技巧分享 1. 快速上手:UI界面初体验 Z-Image-Turbo_UI界面提供了一种极其简单的图像生成方式,无需复杂配置即可快速体验AI绘画的魅力。启动服务后,只需在浏览器中输入http://localh…...

【LangChain 0.3 - 1 - 常用组件】 + 可运行 Agent 实战

一、常用核心组件 1. 聊天模型 ChatModels from langchain_openai import ChatOpenAI# 初始化大模型(大脑) llm ChatOpenAI(model"gpt-3.5-turbo",api_key"sk-xxxxxxxxxxxxxxxx", # 替换为自己的API Keytemperature0.1, # 数值…...

每日安全情报报告 · 2026-04-09

每日安全情报报告 2026-04-09 发布时间:2026-04-09 11:33 报告周期:近 24–48 小时 风险标注:🔴 严重(CVSS ≥ 9.0)|🟠 高危(CVSS 7.0–8.9)|&am…...

周末收听:中国之声DRM短波信号实收记录

本周末(4月4日)在成都用接收了CNR中国之声的DRM短波广播,记录了13825 kHz和13810 kHz两个频率的信号数据。一个从北京发射,一个从昆明发射,传播路径和信号特征差异明显。接收条件接收地点:成都。接收时间&a…...

5分钟搞定Linux打印机驱动:foo2zjs终极配置指南

5分钟搞定Linux打印机驱动:foo2zjs终极配置指南 【免费下载链接】foo2zjs A linux printer driver for QPDL protocol - copy of http://foo2zjs.rkkda.com/ 项目地址: https://gitcode.com/gh_mirrors/fo/foo2zjs 你是否曾经在Linux系统上为打印机驱动而烦恼…...

购物团截图自动马赛克地址,手机号码

订单截图隐私信息自动脱敏工具一、工具概述 本工具是基于 Python OCR 技术开发的电商订单截图隐私自动脱敏工具,针对淘宝、京东、拼多多等主流电商平台订单截图,自动识别并对收货地址、手机号码等敏感信息进行马赛克打码,实现隐私保护。 工具…...

OpenClaw备份恢复方案:千问3.5-35B-A3B-FP8任务配置的迁移技巧

OpenClaw备份恢复方案:千问3.5-35B-A3B-FP8任务配置的迁移技巧 1. 为什么需要备份OpenClaw配置 上周我的主力开发机突然硬盘故障,导致所有数据丢失。最让我痛心的不是代码,而是精心调校了三个月的OpenClaw自动化工作流——包括对接千问3.5模…...

2026开发者App质量监控工具盘点与选型

2026开发者App质量监控工具盘点与选型 质量导航君 头像: 粉丝数:9.6万|获赞数:42.7万 专注开发者工具选型科普,长期输出真实测评与场景解法,帮你在繁杂方案中快速锁定匹配工具。本期聚焦App质量监控领域&a…...

三个角度分析AI自动写文+自动发布自媒体矩阵提效实测

搞自媒体干久了,有谁没动过心思琢磨能不能让机器来帮忙写、帮忙发?尤其是你手头上攥着五六个账号,天天瞅着不同平台的规则、排版、发布时间的安排,脑袋都快给弄炸。最近我试了这么一个流程:用人工智能自动去写文章然后…...

Pyplot在图表显示中文--配置文件法

希望所有 Matplotlib 图表都默认使用黑体、红色线条、圆形标记步骤1:找到/创建配置文件 运行以下代码找到配置文件路径: import matplotlib print(matplotlib.matplotlib_fname())假设输出:C:\Users\你的用户名\.matplotlib\matplotlibrc 如果…...

**标题:MLOps实战进阶:用Python+Docker+Kubernetes打造自动化模型部署流水

标题:MLOps实战进阶:用PythonDockerKubernetes打造自动化模型部署流水线 在现代机器学习工程中,模型从实验到上线的全流程自动化已成为企业级落地的关键瓶颈。传统手动部署模式不仅效率低下,还容易因环境差异导致“在我电脑上能跑…...

【Swoole微服务适配黄金法则】:基于127个真实项目数据验证的8项兼容性阈值指标(含QPS衰减预警公式)

第一章:Swoole微服务适配黄金法则的提出背景与核心价值随着 PHP 生态在高并发、低延迟场景中的持续演进,传统 FPM 架构在微服务化进程中暴露出连接开销大、进程模型僵化、协程支持缺失等系统性瓶颈。Swoole 作为 PHP 原生高性能网络引擎,凭借…...

SDMatte多GPU并行推理配置:提升企业级批量处理吞吐量

SDMatte多GPU并行推理配置:提升企业级批量处理吞吐量 1. 为什么需要多GPU并行推理 当企业需要处理大批量图片时,单张GPU往往难以满足需求。想象一下,你有一家电商公司,每天需要处理上万张商品图片的背景替换。如果只用一张GPU&a…...

仅用3行代码重构I/O密集型API,PHP异步响应时间从1.2s降至86ms(真实电商订单中心压测数据)

第一章:PHP异步I/O性能的本质瓶颈与重构价值PHP 传统同步阻塞模型在高并发 I/O 场景下存在根本性性能瓶颈:每个请求独占一个进程或线程,当执行文件读写、数据库查询或 HTTP 调用时,整个执行流被挂起,CPU 空转等待内核返…...

GPT-6曝光4月14日发布:性能暴涨40%,200万Token,AI真正进入能干活时代

4月14日,OpenAI将发布迄今最强大的AI模型多个独立消息源已确认:OpenAI下一代旗舰模型GPT-6,代号"Spud"(土豆),预计在2026年4月14日正式发布。核心数据:相比GPT-4o性能提升超40%&#…...

QEMU v8.2.4 源码深度剖析:从编译到核心模块的实战指南

1. 从零开始:编译属于你自己的QEMU v8.2.4 如果你和我一样,对虚拟化技术充满好奇,总想扒开QEMU这头“巨兽”的肚子看看里面到底是怎么运转的,那么从源码编译开始,绝对是最扎实的第一步。这不仅仅是得到一个可执行文件&…...