Fastapi重定向端点在Postman/Curl中无法返回目标结果问题咨询
问题原因分析
你的代码逻辑本身没有问题,服务端返回307 Temporary Redirect属于重定向的正常响应。问题出在Postman、Curl默认不会自动跟随3xx重定向响应,而FastAPI自带的/docs接口文档内置的测试工具默认会自动跟进重定向,所以才会出现两端表现不一致的情况。
解决方法
1. Curl请求调整
请求时添加-L参数即可让Curl自动跟随重定向,示例命令:
curl -L http://127.0.0.1:8000/redirect
执行后就能拿到你预期的{"message": "you've been redirected"}返回结果。
2. Postman请求调整
打开Postman的设置面板,找到「Automatically follow redirects」选项,将开关切换为开启状态即可,后续请求/redirect接口时会自动跳转至/redirected拿到返回内容。
如果你不想全局开启该配置,也可以单独在对应请求的「Settings」标签页下,将「Follow redirects」选项设置为「On」。
可选的服务端调整方案(不推荐)
如果你希望所有客户端请求/redirect时都直接拿到结果不需要处理重定向,也可以修改服务端逻辑直接调用redirected函数的返回值,不过这就失去了重定向的本来意义,仅在特殊场景下使用:
@app.get("/redirect") async def redirect(): return await redirected()
内容的提问来源于stack exchange,提问作者Remus 007
相关产品推荐
相关产品推荐

