AngularJS POST 400 bad request
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进行的服务端处理。
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的问题。根据具体情况逐步排查可能的原因,并进行相应的修复操作,以确保请求能够成功发送。
问题的原因是发送的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请求了。