带有请求主体的Elasticsearch GET请求

将请求正文与GET请求一起传递是否违反REST风格?

例如在Elasticsearch中过滤一些信息

curl localhost:9200/megacorp/employee/_search -d '{"query" : {"filtered" : {"filter" : {"range" : {"age" : { "gt" : 30 }}},"query" : {"match" : {"last_name" : "smith"}}}}}'

甚至设计了一些工具来避免GET请求中的请求主体(例如邮递员)

回答:

从RFC:

GET请求消息中的有效负载没有定义的语义。在GET请求上发送有效内容正文可能会导致某些现有实现拒绝该请求。

换句话说,这不是禁止的,但是它是未定义的行为,应避免使用。HTTP客户端,服务器和代理可以随意删除主体,这不会违反标准。这绝对是一个坏习惯。

HTTPBis工作组(负责HTTP和相关标准的工作组)的进一步案文:

最后,请注意,尽管HTTP允许GET请求在语法上具有主体,但这样做仅是为了使解析器具有通用性。根据RFC7231第4.3.1节的规定,GET上的主体没有任何意义,并且将被通用HTTP软件忽略或拒绝。

资源

以上是 带有请求主体的Elasticsearch GET请求 的全部内容, 来源链接: utcz.com/qa/415788.html

回到顶部