我正在嘗試使用AngularJs訪問更新休息方法,但它給了我400 bad request error
。使用AngularJs訪問Sprint休息方法時的錯誤請求
這是我的代碼。
@RestController
@RequestMapping("/api/loggedInUser")
public class UserController {
@RequestMapping(value = "/{id}",method = RequestMethod.PUT)
public AppUser updateLoggedInUser(@RequestBody AppUser user){
return userService.updateAppUser(user);
}
}
這裏是從AngularJs訪問該服務的代碼:
App.factory('LoggedInUserService', ['$resource', function($resource) {
console.log('service injected');
return {
getLoggedInUser: $resource('api/loggedInUser', {}, {
query: {method: 'GET'}
}),
updateLoggedInUser: $resource('api/loggedInUser/:id', {}, {
update: {method: 'PUT', params: {id: '@id'}}
})
};
}]);
這裏是我的app.js
文件訪問服務的代碼。
.run(function($location, $rootScope, LoggedInUserService) {
LoggedInUserService.getLoggedInUser.query(function(loggedInUser) {
$rootScope.loggedInUser = loggedInUser;
console.log($rootScope.loggedInUser.username);
if (loggedInUser.role[0].authority === 'ADMIN_ROLE' && loggedInUser.pristineAccess) {
$rootScope.loggedInUser.isAdmin = true;
$rootScope.pristineAccess = false;
LoggedInUserService.updateLoggedInUser.update($rootScope.loggedInUser);
$location.path('/admin');
} else {
$rootScope.loggedInUser.isAdmin = false;
$location.path('/dashboard');
}
});
});
當我刪除了@RequestBody
註釋我沒有得到一個400錯誤,但參數沒有得到填充。
我在這裏做錯了什麼?我在同一個應用程序的另一個地方使用了相同類型的代碼,它工作正常。這裏唯一的區別是rest方法參數參數是一個實體對象而不是pojo。
請解釋一下,在請求時,爲什麼'id'路徑變量你不使用它,並顯示AppUser類和由請求發送的json對象。這將比試圖猜測這一切更簡單... – 2014-09-11 08:40:02