使用带有 Angular 的 $http 的 PUT 方法时向查询字符串添加参数
Posted
技术标签:
【中文标题】使用带有 Angular 的 $http 的 PUT 方法时向查询字符串添加参数【英文标题】:Add parameters to query string when using PUT method with Angular's $http 【发布时间】:2015-10-12 21:46:27 【问题描述】:我正在使用 Angular 的 $http
服务来发出 web api 请求。当我使用 GET 方法时,两个参数值被添加到查询字符串中:
// http://foo.com/api/test?heroId=123&power=Death+ray
$http.get("/api/test",
params: heroId: 123, power : "Death ray"
)
但是,当我使用 PUT 方法时,参数被 JSON 编码并作为请求负载发送:
// "params":"heroId":123,"power":"Death ray"
$http.put("/api/test",
params: heroId: 123, power : "Death ray"
)
使用 PUT 时如何强制将参数添加到查询字符串中?
【问题讨论】:
【参考方案1】:对于$http.put
、$http.post
或$http.patch
,包含您的url 参数的config 对象作为第三个参数,第二个参数是请求正文:
$http.put("/api/test", // 1. url
, // 2. request body
params: heroId: 123, power : "Death ray" // 3. config object
);
$http.put
documentation供参考
【讨论】:
拯救了我的一天,谢谢【参考方案2】:AngularJS 发送 json 数据而不是 x-www-form-urlencoded 格式数据。 尽管您可以尝试以下方法:
$http.put("/api/test", heroId: 123, power : "Death ray" );
【讨论】:
【参考方案3】:如果你的 api url 是“api/test/heroId/power”,
var data = 123+'/死亡射线'
$http.put("api/test"+data);
【讨论】:
你肯定误解了这个问题。参数进入查询字符串,而不是路径。以上是关于使用带有 Angular 的 $http 的 PUT 方法时向查询字符串添加参数的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 Angular 的 $http 的 PUT 方法时向查询字符串添加参数
angular2,带有凭据的http。无法添加 cookie
带有 HTTP 基本身份验证的 Angular 6 HTTP Get 请求
带有 Angular 的 Lumen API,加载资源 HTTP 失败