我正在使用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'
}
}
});
});
每当上设置类的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。
你可以给我任何提示如何使用$资源服务解决这个内容类型问题?
请查看后台控制器代码here。
任何你没有使用实例方法并在'forEach'循环内调用'value。$ save()'而不是类级'Settings.save()'的原因?我认为如果将这些资源实例视为对象而不是数据容器,它将帮助您避免这些问题。 –
好的。会改变这一点 – saw303