【问题标题】:AngularJS | Set Path Parmeter while using $http.get methodAngularJS |使用 $http.get 方法时设置路径参数
【发布时间】:2015-03-16 21:28:25
【问题描述】:

我有一个 URI 为 /user/user-id 的 GET 端点。 'user-id' 是这里的路径变量。

在发出 GET 请求时如何设置路径变量?

这是我尝试过的:-

$http.get('/user/:id',{
                params: {id:key}
            });

id 不是替换路径变量,而是作为查询参数附加。 即我的调试器将请求 URL 显示为 'http://localhost:8080/user/:id?id=test'

我预期的解析 URL 应该类似于“http://localhost:8080/user/test

【问题讨论】:

标签: angularjs


【解决方案1】:

$http 的 params 对象用于查询字符串,因此您传递给 params 的键值对将作为查询字符串的键和值输出。

$http.get('/user', {
    params: { id: "test" }
});

变成:http://localhost:8080/user?id=test

如果您需要http://localhost:8080/user/test,您可以:

  1. 自己构造url,

    $http.get('/user/' + id);

  2. 或者,使用 $resource(特别是 $resource.get https://docs.angularjs.org/api/ngResource/service/$resource)。这有点干净。

【讨论】:

  • 查看共享链接中的示例,@id 部分是什么意思? var CreditCard = $resource('/user/:userId/card/:cardId', {userId:123, cardId:'@id'}, {charge: {method:'POST', params:{charge:true}} });
【解决方案2】:

为什么不这样呢?:

var path = 'test';
$http.get('/user/' + path, {});

【讨论】:

  • 是的,这绝对是一种方式。我想避免那个 concat 部分,因为当我们有多个路径参数时它看起来很不整洁。例如:/user/:id/account/:accountId/transaction/:txnid
  • 我明白了...那么也许您可以使用$resorce(正如@user2943490 所建议的...)。
猜你喜欢
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 2016-12-11
  • 2019-10-25
  • 1970-01-01
  • 2019-04-19
  • 2014-09-12
  • 2023-02-25
相关资源
最近更新 更多