上下文
项目部署到Heroku后,调用API没有返回相应的响应。我发送POST请求/users
,在form中有相应的参数。正常情况下应该成功创建User,然后以JSON格式返回User的数据。
线索
- 在Terminal中调用heroku logs得到刚刚Heroku收到的请求是GET方法,而不是POST方法。其中关键log如下:
at=info method=GET path="/api/ingradients" host=monkey-eat.herokuapp.com request_id=99e3a824-fae6-4a34-9a6d-9e785254beb4 fwd="27.36.201.236" dyno=web.1 connect=0ms service=18ms status=200 bytes=426
过程
- 谷歌搜
heroku send a post request but show this request is get
。我英语表达水平有限,别人是这样提问的:POST request being received as GET request on Heroku
在StackOverflow找打一个合适的解决办法,原文在这里。
主要内容的翻译如下:
我的请求发送到http://MYAPP.heroku.com ,然而Heroku应用真正的域名应该是http://MYAPP.herokuapp.com 。当我发送请求到http://MYAPP.heroku.com 时很明显我的请求被移动了.
结果
把API改成正确的域名就解决了。其实在看Heroku的日志时就能看到host不同,以后看错误报告和日志时得一个字一个字地看。