【问题标题】:Difference between $http.put and $http({method:'PUT'}) in AngularJSAngularJS 中 $http.put 和 $http({method:'PUT'}) 的区别
【发布时间】:2015-11-27 23:47:39
【问题描述】:

我必须将一些 json 数据“PUT”到服务器。下面的代码抛出错误

$rootScope.request.data = {"name": "John", "surname":"Doe"}
var uri = //some REST API
var action = $http({
    method: 'PUT',
    url: uri,
    data: $rootScope.request.data
});

抛出的错误是:

找不到资源流:Resource{displayName='null', uri='/注册'} (org.mule.module.apikit.exception.ApikitRuntimeException)。信息 有效载荷的类型:NullPayload

但是当我这样做时,它会起作用

$rootScope.request.data = {"name": "John", "surname":"Doe"}
var uri = //some REST API
var action = $http.put(uri, $rootScope.request.data);

然后将“动作”推送到一个数组中,并使用 $q.all 触发请求。成功和错误在$q中处理

想知道它们之间有什么区别吗?我在第一个请求中遗漏了什么吗?

【问题讨论】:

  • @StaffordWilliams 在我的问题中添加了错误
  • 您可以简单地按 F12 并查看您的代码发送了哪些请求(例如在 chrome 中的“网络”中),这样您就可以看到它们之间的区别
  • $http.put 只是一个包装器。看看源码,1153行和1183-1193github.com/angular/angular.js/blob/master/src/ng/http.js

标签: angularjs http angularjs-http http-put


【解决方案1】:

解决了这个问题。感谢@rzysia 的指点。

当我比较请求时,第一种情况下的 Content-Type 以“text/plain”的形式发送,而在第二种情况下,它是“application/json”。 REST API 需要“application/json”作为内容类型。

添加下面的代码就可以了

$rootScope.request.data = {"name": "John", "surname":"Doe"}
var uri = //some REST API
var action = $http({
    method: 'PUT',
    url: uri,
    headers: {"Content-Type": "application/json;charset=UTF-8"},
    data: $rootScope.request.data
});

这些链接很有帮助:https://github.com/angular/angular.js/issues/2149Content-Type header not being set with Angular $http

非常感谢所有投入 2 位的人 :)

【讨论】:

    猜你喜欢
    • 2017-02-08
    • 1970-01-01
    • 2019-03-12
    • 2013-11-09
    • 2010-09-11
    • 2023-03-11
    相关资源
    最近更新 更多