当前位置: 首页 > 面试题库 >

带有请求主体的Elasticsearch GET请求

陈淳
2023-03-14
问题内容

将请求正文与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上执行简单的“请求正文搜索”,如以下示例所示,但使用.NET而不是curl 下面是我的.NET代码。 但是,我收到以下错误。 有什么方法可以使用标准.NET类发送带有请求的内容主体。还是有解决方法? 问题答案: 将更改为解决方法。 MSDN声明,如果使用or 方法调用该方法,则将引发a 。

  • 问题内容: 我尝试了python 请求库文档中提供的示例。 使用,我得到了响应代码,但是我想获得所请求的每个页面的内容。例如,这不起作用: 问题答案: 注意 下面的答案是不适用于请求v0.13.0 +。编写此问题后,异步功能已移至。但是,你可以将其替换为下面的内容,它应该可以工作。 我已经留下了这个答案,以反映原始问题,即有关使用请求的问题。 要异步执行多个任务,你必须: 为每个对象定义一个函数(

  • 我试图在flask应用程序上记录post请求,如下所示: 我这样做是因为我怀疑有时我会在POST上得到一个格式错误的JSON对象。我看到的问题是日志包含一个截断的请求体——它似乎被夹在中间... 我不能放日志摘要,因为它是敏感数据。。为什么请求被截断?我做错了吗? 谢谢

  • 我正在研究一个播放器的集成,该播放器必须在浏览器中播放由Widevine DRM保护的流。 我查了一些知名玩家: DashJs-https://github.com/Dash-Industry-Forum/dash.js/wiki 幸运的是,这些播放器提供了一些使用Widevine DRM保护的流的示例。 我的问题涉及XHR执行以检索DRM密钥。在任何Widevine安全流中,我可以看到(在dev

  • 我正在用Application/JSON数据发送原始POST请求到邮递员服务器。我需要使用这个JSON对象,并在请求前脚本中追加一些数据。但是我只能找到如何访问环境变量,而不能请求主体。有人知道吗?谢了!

  • 我在: > http://developer.yahoo.com/blogs/ydn/important-api-updates-changes-8060.html http://developer.yahoo.com/boss/search/ http://tech.groups.yahoo.com/group/ysearchboss/msearch?query=http要求 http://de