400使用AngularJs访问Sprint Rest方法时请求错误
我试图用AngularJs访问更新rest方法,但它给了我400使用AngularJs访问Sprint Rest方法时请求错误,angularjs,spring,Angularjs,Spring,我试图用AngularJs访问更新rest方法,但它给了我400个错误请求 这是我的密码 @RestController @RequestMapping("/api/loggedInUser") public class UserController { @RequestMapping(value = "/{id}",method = RequestMethod.PUT) public AppUser updateLoggedInUser(@RequestBody AppUser u
400个错误请求
这是我的密码
@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 将consumes=MediaType.APPLICATION_JSON_VALUE添加到控制器方法中,并使用web developers工具或firebug或simmilar工具检查帖子内容
@RequestMapping(value = "/{id}", consumes = MediaType.APPLICATION_JSON_VALUE,method = RequestMethod.PUT)
public AppUser updateLoggedInUser(@RequestBody AppUser user){
return userService.updateAppUser(user);
}
尝试添加它,但得到相同的错误。当检入firebug时,我看到传递了一个有效的json对象。我觉得这与将json对象转换为java对象有关。但不知道如何调试它。我认为缺少@PathVariable(“id”),我的印象是,如果它是一个对象,我们使用RequestBody,如果它是一个基本类型,我们使用PathVariable。但我不是100%确定。@path变量是url的一部分,在您的例子中,它是您的id,因为您有@RequestMapping(value=“/{id}”),请解释请求中的
id
path变量的含义,为什么不使用它,并显示请求发送的AppUser类和json对象。这比猜测所有内容都要简单。。。