FastAPI本地正常,部署AWS Lambda后/blogs端点重定向循环问题
问题原因
FastAPI 默认会对不带末尾斜杠的路由(如/blogs)自动返回307重定向,引导请求到带末尾斜杠的版本(/blogs/)。但在AWS Lambda URL环境中,重定向后的请求路径被解析时可能丢失末尾斜杠,导致请求再次触发重定向,形成无限循环,最终出现「Too many redirects」错误。而带具体ID的路由(如/blogs/1)不存在末尾斜杠的重定向逻辑,因此可以正常响应。
解决方法
方法1:全局禁用FastAPI的自动斜杠重定向
在初始化FastAPI应用时添加redirect_slashes=False参数,关闭全局自动重定向行为,让/blogs和/blogs/都能匹配到对应路由:
from fastapi import FastAPI app = FastAPI(redirect_slashes=False)
方法2:针对单个路由禁用重定向
如果不想全局修改,可以在/blogs路由定义时单独设置redirect_slashes=False:
@app.get("/blogs", redirect_slashes=False) async def fetch_blogs(): # 你的业务逻辑代码
方法3:统一路由路径格式
将路由定义为带末尾斜杠的形式(/blogs/),同时确保请求时使用带斜杠的路径。不过这种方法需要调整所有相关请求的路径,灵活性不如前两种。
验证步骤
- 修改代码后,重新打包成.zip归档
- 重新部署到AWS Lambda
- 测试
https://<lambda-url>/blogs和https://<lambda-url>/blogs/,确认两者都能正常返回响应,不再触发重定向循环
内容的提问来源于stack exchange,提问作者tail
相关产品推荐
相关产品推荐

