我正在使用 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 文档,应该可以覆盖标头,但我的设置以某种方式被忽略了。我似乎这是一个常见问题,作为一种解决方法,有很多建议使用 $http.post 而不是 $resource。
你能给我任何提示如何使用 $resource 服务解决这个内容类型问题吗?
请在此处找到后端控制器代码。