AngularJS 中 $http.put 和 $http({method:'PUT'}) 的区别

Difference between $http.put and $http({method:'PUT'}) in AngularJS

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

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

抛出的错误是:

Flow not found for resource: Resource{displayName='null', uri='/signup'} (org.mule.module.apikit.exception.ApikitRuntimeException). Message payload is of type: NullPayload

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

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

然后将 'action' 推入数组,并使用 $q.all 触发请求。成功和错误在 $q

中处理

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

问题已解决。感谢@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/2149 and

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