gpt4 book ai didi

angular - 使用angular 2+中的--data-raw进行简单的http GET请求

转载 作者:行者123 更新时间:2023-12-03 01:13:05 25 4
gpt4 key购买 nike

我正在尝试使用GET request制作以下angular httpClient,但到目前为止仍未成功。任何人都可以帮忙。请求如下。

curl --location --request GET 'MY_URL_TO_SEND' 
--header 'Content-Type: application/json'
--header 'Authorization: MY_TOKEN'
--data-raw '{
"_source": ["title"],
"query": {
"multi_match": {
"query": "covid",
"type": "best_fields",
"fields": ["title.e_ngrams^4", "description.e_ngrams", "keywords.e_ngrams^2"],
"fuzziness": 1
}
}
}'
当我将其粘贴到 terminal中时,该命令有效,并将返回以下结果。
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 6,
"relation": "eq"
},
"max_score": 1.0,
"hits": [
{
"_index": "stats",
"_type": "_doc",
"_id": "daily-covid-19-deaths",
"_score": 1.0,
"_source": {
"title": "Daily Covid-19 Deaths"
}
}]
}
},
但是,当我通过 Angular 进行 call 时,不仅返回 title作为 _source,它还会返回我所有其他参数,这也表明 call 无法正常工作。
到目前为止,这是我尝试过的。
const httpParams: HttpParams = new HttpParams();
httpParams.set('_source', JSON.stringify(['title', 'slug']));
httpParams.set(
'query',
JSON.stringify({
multi_match: {
query: query,
type: 'best_fields',
fields: [
'title.e_ngrams^4',
'description.e_ngrams',
'keywords.e_ngrams^2',
],
fuzziness: 1,
},
})
);

this.http
.get(environment.ES.searchAPI, {
headers: this.httpHeaders,
params: httpParams,
})
.subscribe((data: any) => {
this.searchResults.next(this.parseResults(data));
});
}
这将返回结果给我,但是传递的参数(例如 _source)不起作用。它只是返回所有结果。
这是我的 Angular 应用 httpClient从上面的代码返回的内容。
enter image description here

最佳答案

您可以改用POST request
一个例子:

const body = JSON.stringify({
_source: ['title', 'slug'],
query:{
multi_match: {
query: query,
type: 'best_fields',
fields: [
'title.e_ngrams^4',
'description.e_ngrams',
'keywords.e_ngrams^2',
],
fuzziness: 1,
}
}
});

const httpHeaders = new HttpHeaders({
'Content-Type' : 'application/json'
});

this.httpClient.post(environment.ES.searchAPI, body, {
headers:httpHeaders
})
.subscribe((data: any) => {
console.log(data);
});
那么,为什么在您的示例中得到了所有结果参数?
您的 GET request忽略了 params: httpParams,因为 httpParamsnull
尝试将 httpParams.set更改为 httpParams = httpParams.set

关于angular - 使用angular 2+中的--data-raw进行简单的http GET请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63541624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com