AngularJS POST 400 bad request

11 浏览
0 Comments

AngularJS POST 400 bad request

我正在尝试在Angular控制器中进行POST请求,当我的Java RestController不需要参数时运行正常(即下面save的签名只是save()),但是一旦我告诉它需要一个参数,并尝试在Angular的POST请求中发送它时,它会返回400 Bad Request。是否需要做一些工作来正确地从Angular进行POST请求发送数据?

@RestController
@RequestMapping("/person")
public class PersonController {
    @RequestMapping(method = RequestMethod.POST)
    public Person save(@RequestParam Long personnelId) {
        System.out.println("SUCCESSFULLY POSTED");
        return null;
    }
}

POST请求:

$http({
    url: 'http://localhost:8080/person',
    method: 'POST',
    data: {personnelId: 4}
}).success(function() {
    // do something on success    
});

如果相关的话,这是通过Spring Security和Hibernate进行的服务端处理。

0
0 Comments

AngularJS POST 400 bad request问题的出现原因可能是参数名映射错误或未配置CORS。解决方法可以尝试修改参数名映射或更改数据格式。

具体解决方法如下:

1. 检查参数名映射:尝试将参数名映射修改为正确的名称。例如,将(value="personnelId") Long personalId修改为正确的参数名。

2. 配置CORS:如果在使用跨域请求(Cross-Origin Resource Sharing)时出现问题,可能需要配置CORS。可以参考相关文档配置CORS,以确保请求能够正常发送。

3. 检查错误详情:查看错误信息是否提供了其他详细信息。根据错误信息进行排查和修复。

4. 修改数据格式:尝试将数据格式修改为$.param({personnelId: personnelId})。这可能有助于解决请求错误。

通过以上几个步骤,可以尝试解决AngularJS POST 400 bad request的问题。根据具体情况逐步排查可能的原因,并进行相应的修复操作,以确保请求能够成功发送。

0
0 Comments

问题的原因是发送的POST请求中的content type没有设置为application/json。解决方法是在Angular的POST请求中设置content type为application/json。

具体的解决方法如下:

$http({
    url: 'http://localhost:8080/person',
    method: 'POST',
    contentType: "application/json",
    data: {personnelId: 4}
}).success(function() {
    // do something on success    
});

这样设置之后,就能够正确地发送POST请求了。

参考链接:https://stackoverflow.com/a/26146813/559095

0