代码之家  ›  专栏  ›  技术社区  ›  user3198603

传递带有GET请求的请求体?

  •  0
  • user3198603  · 技术社区  · 5 年前

    就像在 this elastic get query query_string 在请求正文下传递 GET 请求。不是吗?但是我相信我们不能用GET请求传递请求体,那么这个例子为什么是真的呢?

    GET /_search
    {
        "query": {
            "query_string" : {
                "default_field" : "content",
                "query" : "this AND that OR thus"
            }
        }
    }
    

    事实上当我使用选项时 COPY as CURL 从上面的链接我可以看到下面的文本副本

    curl -X GET "localhost:9200/_search" -H 'Content-Type: application/json' -d'
    {
        "query": {
            "query_string" : {
                "default_field" : "content",
                "query" : "this AND that OR thus"
            }
        }
    }
    '
    

    我是不是漏掉了什么东西,或者是例子中的错误?事实上,我看不到将请求主体发送到 Postman

    2 回复  |  直到 5 年前
        1
  •  1
  •   kahveci    5 年前

    事实上你可以 GET 用身体请求。当前的HTTP标准 rfc7231 rfc2616 和更新 rfc2817 得到

    GET请求消息中的有效负载没有定义的语义; 在GET请求上发送有效载荷体可能会导致一些现有的

    在弹性搜索方面,使用 得到 因为搜索请求是一个设计决策。他们觉得这在语义上更有意义。因为它比 POST

    另一方面,如上所述 得到 岗位 请求搜索和检索信息。所以,当你不能 请求一个body,您可以通过 岗位

        2
  •  0
  •   Mysterion    5 年前

    这其实是一个很有意思的问题。事实上,很多HTTP客户机都不支持body的GET请求(我最近才看到,Cocoa中的iOS客户机不能这样做)。

    我也和我的同事进行了很多讨论-对我来说,在使用Elasticsearch很长时间之后,GET with a body听起来是一个非常好的HTTP请求,但是有些人可能会争辩说,GET根本不应该与body一起使用,根据 HTTP standard

    一般来说,这会导致这样一种情况:如果您使用的是不支持GET的客户机,那么您可以将其更改为POST,或者切换到其他地方—如果需要动态构造复杂的查询,我总是使用cURL或Kibana Dev工具