Angularjs 400错误的请求,带有不包含正文的$http.post
我有一个angular js应用程序,在尝试发出以下post请求时:Angularjs 400错误的请求,带有不包含正文的$http.post,angularjs,spring,rest,Angularjs,Spring,Rest,我有一个angular js应用程序,在尝试发出以下post请求时: $resource('api/'+API_VERSION+'/projects/:projectId/users/:userId') .save( { projectId:$scope.project.id, userId:id }, {} ,function(){ // Handle ca
$resource('api/'+API_VERSION+'/projects/:projectId/users/:userId')
.save(
{
projectId:$scope.project.id,
userId:id
},
{}
,function(){
// Handle callback
});
我收到一个错误的400请求。
请求由spring RestController处理,方法如下所示:
@RequestMapping(value = "/projects/{projectId}/users/{userID}",
method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_VALUE)
@RolesAllowed(AuthoritiesConstants.USER)
void addUsers(@PathVariable Long projectId, @PathVariable Long userId) {
log.debug("REST request to add admin to project");
projectService.addUser(projectId, userId);
}
我检查了发送到服务器的请求,没有发现什么不好的地方
url是正确的(所有参数都是有效类型),并且内容类型设置为Application json。
提前感谢您的帮助。您的API使用JSON并返回void,因此我认为您应该在
@RequestMapping
中使用consumes=MediaType.applicatt\u JSON\u值
[编辑]:
除了consumes注释,后端的一切都很好。您能否尝试使用以下代码发出post请求:
$resource('api/'+API_VERSION+'/projects/:projectId/users/:userId',
{projectId: $scope.project.id, userId: id}).$save();
或者,再次创建资源的实例:
var Project = $resource('api/'+API_VERSION+'/projects/:projectId/users/:userId',
{projectId: $scope.project.id, userId: id});
var newProject = new Project();
newProject.$save();
让我知道它是否有效?首先感谢您的回答,我试过了,但没有解决我的问题。我猜问题来自我的客户机的请求,而不是服务器,因为功能测试工作正常,例如下面的调用工作正常:restProjectResourceMock.perform(post(“/api/”+Application.api_VERSION+”/projects/“+projectDTO.getId()+”/users/“+user.getId())。和expect(status().isOk());如果用户正确添加到项目中,嘿,我已经编辑了我的答案,并为您的帖子请求提供了一些建议。我希望它能起作用。再次非常感谢:),这不是实际的问题,但我终于明白了,这是因为在我的后端,用户Id是用大写字母I和D写的,而在参数中它只是Id,所以一旦我确定它是相同的,它就工作得很好啊,是的,我现在看到了!该死,有时候我们应该找最简单的解释。很抱歉我错过了!