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

时间:2015-09-02 12:50:00

标签: angularjs http angularjs-http http-put

我必须' 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
});

抛出的错误是:

  

找不到资源的流:资源{displayName =' null',   URI =' /注册'}   (org.mule.module.apikit.exception.ApikitRuntimeException)。信息   payload的类型为:NullPayload

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

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

&#39>行动'然后在数组中推送,并使用$ q.all触发请求。成功和错误在$ q

中处理

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

1 个答案:

答案 0 :(得分:5)

解决了这个问题。感谢@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位的人:)