Postman正常但HTTPie调用AWS APIGateway返回307临时重定向
解决HTTPie调用AWS API Gateway返回307 Temporary Redirect的问题
看起来你遇到的问题很典型——Postman能正常请求,但HTTPie返回307重定向,大概率是请求URL的格式或者HTTPie的参数传递方式有问题,我来帮你一步步排查:
1. 检查API Gateway URL是否包含阶段名称
AWS API Gateway的正式URL必须包含部署阶段名称(比如prod、dev这类你在部署时设置的阶段),标准格式应该是:
{userid}.execute-api.ap-southeast-2.amazonaws.com/{stage}/sqstest/message
你当前的命令里漏掉了阶段名称,而Postman能正常工作,很可能是Postman的请求URL已经包含了这个阶段。比如如果你的部署阶段是prod,修改后的命令应该是:
http POST {userid}.execute-api.ap-southeast-2.amazonaws.com/prod/sqstest/message name=john
2. 让HTTPie自动跟随重定向(临时 workaround)
如果确实是重定向问题,你可以先通过参数让HTTPie自动跳转,加上--follow(或简写-f)参数:
http -f POST {userid}.execute-api.ap-southeast-2.amazonaws.com/sqstest/message name=john
不过这只是临时解决办法,最好还是补全阶段名称从根源解决,避免不必要的网络跳转。
3. 对比Postman与HTTPie的请求头
Postman正常工作时,你可以查看它的请求头配置,然后在HTTPie里手动同步相同的请求头。比如如果Postman指定了Content-Type: application/json,可以这样写命令:
http POST {userid}.execute-api.ap-southeast-2.amazonaws.com/prod/sqstest/message Content-Type:application/json name=john
或者直接用JSON格式传递参数:
http POST {userid}.execute-api.ap-southeast-2.amazonaws.com/prod/sqstest/message '{"name": "john"}'
4. 验证API Gateway的部署配置
登录AWS控制台查看API Gateway的部署详情,确认你的API已经部署到对应阶段,且阶段的资源路径和你的请求路径完全匹配。
优先试试补全阶段名称的方案,这是这类问题最常见的诱因,如果还是不行,再对比请求头或者检查部署配置。
内容的提问来源于stack exchange,提问作者hogs
相关产品推荐
相关产品推荐

