get请求参数放body里,post请求参数放url上这种是否合理?

作者站长头像
站长
· 阅读数 25

get请求参数放body里,post请求参数放url上这种是否合理?

有时候参数很少的情况我会让前端把参数放到post的url上,因为我感觉比如有两个参数,我后端要新建一个bean用@RequestBody接收完全没必要

我的想法是:如果get请求的参数可能比较复杂比如有bean的嵌套或者长度比较大超过了容器的限制(不考虑产品涉及是否合理),就可以放在body中,否则就放在url上;如果post请求参数比较简单(比如两个参数),我就放在url上不想在新建一个bean了(感觉麻烦),如果参数比较多或者比较复杂就放在body中。我的这种想法合理吗?

回复
1个回答
avatar
test
2024-06-20

技术上讲是可以的,但是不建议: https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET

虽然HTTP规范(RFC 7231)并未规定GET请求不可以携带Body,但是后续的规范逐步建议应该明确这种行为,给予警告甚至拒绝。

曾经ElasticSearch的RESTAPI采用GET请求携带Body请求的接口格式和规范,但在目前版本中已经彻底废弃

一篇不错的介绍文章可以参见: https://www.baeldung.com/cs/http-get-with-body

如果你用第三方类库,可能已经开始拒绝GET请求携带Body了,所以更不建议你这么去做

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容