yur*_*rko 17 post curl get elasticsearch
是不是将REST风格的方法与GET请求一起传递请求体?
例如,在Elasticsearch中过滤一些信息
curl localhost:9200/megacorp/employee/_search -d '{"query" : {"filtered" : {"filter" : {"range" : {"age" : { "gt" : 30 }}},"query" : {"match" : {"last_name" : "smith"}}}}}'
Run Code Online (Sandbox Code Playgroud)
一些工具甚至被设计为避免GET请求中的请求体(如邮递员)
dad*_*net 11
不,这不对.
在REST中,使用POST查询没有意义.POST应该修改服务器.搜索时你显然不修改服务器.
GET 适用于此.
话虽如此,我们知道有些语言和工具不允许这样做.虽然RFC没有提到你不能拥有一个体GET.
所以elasticsearch也支持GET.
这个:
GET /_search?q=foo
Run Code Online (Sandbox Code Playgroud)
将以同样的方式工作.
来自RFC:
GET请求消息中的有效负载没有定义的语义; 在GET请求上发送有效负载主体可能会导致某些现有实现拒绝该请求.
换句话说,它不被禁止,但它是未定义的行为,应该避免.HTTP客户端,服务器和代理可以自由放弃身体,这不会违反标准.这绝对是一种不好的做法.
来自HTTPBis工作组(处理HTTP和相关标准的小组)的更多文本:
最后,请注意,虽然HTTP允许GET请求在语法上具有正文,但这只是为了允许解析器是通用的; 根据RFC7231,第4.3.1节,GET上的主体没有任何意义,并且将被通用HTTP软件忽略或拒绝.
| 归档时间: |
|
| 查看次数: |
13949 次 |
| 最近记录: |