Angularjs 400错误的请求,带有不包含正文的$http.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

我有一个angular js应用程序,在尝试发出以下post请求时:

$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,所以一旦我确定它是相同的,它就工作得很好啊,是的,我现在看到了!该死,有时候我们应该找最简单的解释。很抱歉我错过了!