gpt4 book ai didi

javascript - 带有 json 参数的 Angular http 请求

转载 作者:可可西里 更新时间:2023-11-01 16:33:53 25 4
gpt4 key购买 nike

在我的 RESTful api 中,其中一个资源公开了一个 GET 方法,该方法接受 json 作为名为“query”的参数。此参数直接传递给 MongoDB 查询,允许用户使用 mongo 语法直接查询数据库。

我遇到的问题是请求总是这样:

?&query=%7B%22source%22:%22incident%22%7D 

它应该看起来像这样:

?&query={'source': 'incident'} 

这就是我发送 GET 请求的方式:

var query = {};
if ($scope.sourceFilter) { query.source = $scope.sourceFilter; }
var query = JSON.stringify(query);
$http.get('/api/feedbackEntries', {params: {limit: $scope.limit, query: query}}).success(function(data) { .......

我在其他获取请求上做同样的事情,但我没有遇到这个问题。

我是不是做错了什么?这与 Angular 解析参数的方式有关吗?

谢谢

最佳答案

喜欢$http docs

params{Object.<string|Object>} – Map of strings or objects which will be turned to ?key1=value1&key2=value2 after the url. If the value is not a string, it will be JSONified.

后面的重点是我加的。

所以 query您传递给 params 的对象的属性配置选项是一个对象。这意味着它将被 JSON 化,这意味着与

JSON.stringify(query);

所以这个

{'source': 'incident'}

转向这个:

'{"source": "incident"}'

作为RFC 1738状态:

... only alphanumerics, the special characters "$-_.+!*'(),", and reserved characters used for their reserved purposes may be used unencoded within a URL.

碰巧{ , }"不在该列表中,必须进行 url 编码才能在 url 中使用。在你的情况下 %7B对应{ , %7D对应}%22对应" .

所以这是正常现象,大多数服务器软件会自动为您解码 url 查询参数,因此它们会正常呈现。您很可能需要以某种方式将其解析回 JSON!

希望这对您有所帮助!

关于javascript - 带有 json 参数的 Angular http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21753072/

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