【问题标题】:AngularJS - Send $http GET request with associative array paramsAngularJS - 发送带有关联数组参数的 $http GET 请求
【发布时间】:2014-09-02 16:35:33
【问题描述】:

我正在尝试使用此代码向我的休息服务发送 $http.get 请求:

$http({
    method: 'GET',
    url: '/api/item/all',
    params: {
        query: {
            userid: 7
        },
        fields: 'title'
    }
});

我希望访问此 URL:

/api/item/all?query[userid]=7&fields=title

但我总是收到格式错误的网址...

那么,如何进行呢?

甚至更好:是否可以将完整的请求 url 传递到 $http 的 url-param 中?

【问题讨论】:

  • 除非有变量,否则用完整的查询字符串编写 url 应该没问题
  • 可以试试"query[userid]" : 7 , fields: 'title'
  • @ExplosionPills 用户 id 是一个变量...我应该先用 url 创建一个字符串,然后将其传递给 $http 吗?
  • @charlietfl 已经尝试过...根本没有传递变量。
  • 好的。我没有意识到这是一个变量。你能改变后端吗,这是一个难看的 url,特别是因为 userid 是一个变量。或者,提前创建字符串也不是问题

标签: angularjs http angularjs-http


【解决方案1】:

在 GET 请求中,您应该将参数作为查询字符串的一部分传递。

可以使用快捷方式get调用,在url中传入查询参数:

$http.get('api/item/all?userid=" + 7 + "&fields=title");

如果您需要将它们作为范围变量访问,您也可以这样做:

$http.get('api/item/all?userid=" + $scope.foo + "&fields=" + $scope.bar);

还取决于后端,您可以将它们作为路径参数而不是查询参数发送:

$http.get('api/item/all/userid/" + $scope.foo + "/fields/" + $scope.bar);

希望有帮助

【讨论】:

  • 请不要手动构建查询字符串!您必须手动转义这些值。最好使用params option of the config object
  • 我必须非常同意丹·达尔卡莱斯库的观点。我目前正在处理我们的网络应用程序上的很多问题,因为之前有人手动建立了字符串。为什么选择脆弱的方法作为最佳实践,而不是使用您提供的框架?
猜你喜欢
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
  • 2019-10-18
  • 1970-01-01
相关资源
最近更新 更多