将请求正文与 GET 请求一起传递不是违反 REST 风格的方法吗?
例如在Elasticsearch中过滤一些信息
curl localhost:9200/megacorp/employee/_search -d '{"query" : {"filtered" : {"filter" : {"range" : {"age" : { "gt" : 30 }}},"query" : {"match" : {"last_name" : "smith"}}}}}'
有些工具甚至被设计为避免 GET 请求中的请求正文(例如 postman)
来自RFC https://www.rfc-editor.org/rfc/rfc7231#section-4.3.1:
GET 请求消息中的有效负载没有定义的语义;在 GET 请求上发送有效负载正文可能会导致某些现有实现拒绝该请求。
换句话说,这不是禁止的,但它是未定义的行为,应该避免。 HTTP 客户端、服务器和代理可以自由地删除正文,这不会违反标准。这绝对是一个不好的做法。
来自 HTTPBis 工作组(致力于 HTTP 和相关标准的小组)的更多文本:
最后,请注意,虽然 HTTP 在语法上允许 GET 请求有主体,但这只是为了允许解析器是通用的;根据 RFC7231 第 4.3.1 节,GET 上的正文没有任何意义,并且将被通用 HTTP 软件忽略或拒绝。
source https://github.com/httpwg/http-extensions/blob/master/draft-ietf-httpbis-bcp56bis.md
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)