【发布时间】:2013-10-14 22:32:54
【问题描述】:
我正在使用 Angular 1.2-RC2(也尝试过 1.0.8 和 1.1.x)和 ngResource 模块。后端是一个 Spring WebMVC 应用程序。
angular.module("dox", ['ngResource'])
.controller('SettingsController', function ($scope, Settings) {
$scope.settings = Settings.query();
$scope.save = function () {
Settings.save();
};
})
.factory('Settings', function ($resource) {
return $resource('/api/v1/settings/:settingId', {settingId: '@id'}, {
'save': {
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
}
});
});
只要调用 Settings 类的 save() 方法,前端就会收到 HTTP 415(不支持的媒体类型)。原因是 AngularJS 使用以下内容类型发送 POST 请求:
Content type: text/plain;charset=UTF-8
但后端需要
Content type: application/json;charset=UTF-8
根据API docs,应该可以覆盖标题,但我的设置被忽略了。我似乎这是一个常见问题,作为workaround,有很多建议使用 $http.post 而不是 $resource。
您能告诉我如何使用 $resource 服务解决这个内容类型问题吗?
请找到后端控制器代码here。
【问题讨论】:
标签: angularjs spring-mvc angular-resource