使用 Node.js 发送带有请求体的 Get 请求

3
我正在尝试对Elasticsearch API执行GET请求,其需要采用以下格式。
GET /_search
{
    "query": {
        "more_like_this" : {
            "fields" : ["title", "description"],
            "like" : "Once upon a time",
            "min_term_freq" : 1,
            "max_query_terms" : 12
        }
    }
}

我使用了request,但是我找不到如何向请求中添加正文。
有任何帮助吗?
4个回答

6

您可以查看有关请求(options,callback)的文档。

此外,GET方法不应发送任何正文,请确认它不是POST

request.get('http://localhost:8092/_search', {
  json: true,
  body: {
    "query": {
        "more_like_this" : {
            "fields" : ["title", "description"],
            "like" : "Once upon a time",
            "min_term_freq" : 1,
            "max_query_terms" : 12
        }
    }
  }
})

1
API实际上是GET方法,它能够工作但有些奇怪。https://www.elastic.co/guide/en/elasticsearch/reference/6.3/_the_search_api.html - joaner
1
是的,GET请求不建议使用body,但这种情况确实发生了 :D 顺便说一下,我忘记加上 json: true, 了。 - abdoutelb
有关在请求体中使用 GET 的更多信息,请参阅此线程:https://dev59.com/53NA5IYBdhLWcg3wZ85S - t3__rry

0

如果你使用GET,你不能有请求体,只能有查询参数。 你可以将查询参数转换为字符串并添加到URL中,或者使用qs选项:

option = {
    url: 'your_url',
    qs: your_query
};
request(option, (error,res)=>{});

如果想要使用主体,则应该使用POST


-1

嗨,你尝试过将你的请求主体作为第二个参数直接传递吗?

request.get('yourEndpoint', { // your body })

我之前做过这个,但是缺少了一个参数。 - abdoutelb

-1

你不能在GET请求中添加正文,你需要为请求添加查询字符串来发送这些数据。


1
GET请求可以带有请求体,感谢您的努力。 - abdoutelb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接