Heroku部署Springboot应用GET正常POST请求报错如何排查
问题根源
报错和Springboot应用逻辑、Heroku平台部署无关,完全是curl命令的单引号闭合错误导致的shell解析异常。
你写的POST命令中,包裹URL的第一个单引号没有在URL末尾闭合,反而把后续的-d参数也包进了URL的引号范围内:
# 错误写法,引号错位 curl -X POST 'heroku-url -d '{}' '
Shell解析这段命令时,会把第一个单引号到第二个单引号之间的heroku-url -d 识别为请求URL,后续的{}也被当作URL的组成部分,最终触发花括号位置空串的解析错误。本地测试能正常执行,是因为你本地运行时输入的命令引号位置是正确的,和请求逻辑本身无关。
修复方案
调整引号位置,将URL、请求头、请求体各自独立包裹,发送JSON请求时补充对应的Content-Type头,标准正确写法如下:
curl -X POST '替换成你的Heroku应用完整接口地址' \ -H 'Content-Type: application/json' \ -d '{}'
注意事项:
- 每个独立参数(URL、请求头、请求体)的引号必须成对闭合,参数之间用空格分隔,不能将参数选项包裹到URL的引号范围内
- 给Springboot接口发送JSON格式请求时必须携带
Content-Type: application/json请求头,否则Spring MVC会默认按application/x-www-form-urlencoded格式解析请求体,即使命令不报错也可能出现参数绑定失败的问题
内容的提问来源于stack exchange,提问作者Finley Adams
相关产品推荐
相关产品推荐

