如何使用Spring MVC从API REST获取对象
我有一个Spring MVC项目,我已经配置了jackson库来自动将响应(java对象)转换为json,并且它在GET请求中工作如下。
@RequestMapping(method = RequestMethod.GET)
public @ResponseBody Orders createOrder(Model model){
Orders orders = new Orders();
//Populate orders.....
return orders;
}
但是当我尝试处理POST请求并从json的请求中获取对象时,我得到错误“400 Bad Request”,因为Spring无法从json创建对象Orders。 我把相同的json文件放在GET方法响应中,所以我想这个文件格式很好。
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody ResponseEntity<String> createOrder(@RequestBody Orders orders){
LOG.info(orders.toString());
return new ResponseEntity<String>("", HttpStatus.CREATED);
}
如果我将@RequestBody类更改为String(createOrder(@RequestBody String orders)),则POST请求会得到很好的处理。
我是否必须创建一个将输入json映射到类Order的映射器?
更新:我创建了最简单的示例来尝试它,并收到错误400. Exmaple:
域:Home.java
public class Home {
private String address = "Calle mármoles";
public Home(){
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
控制器:
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody ResponseEntity<String> createOrder2(@RequestBody Home orders){
return new ResponseEntity<String>("{}", HttpStatus.CREATED);
}
JSON(POST):
{
address: "Prueba"
}
[解决了]
我错过了将“”放入参数名称的名称中。
[解决了]
我错过了将“”放入参数名称的名称中。
此外,该类必须有一个默认的空构造函数,以便允许杰克逊库创建该对象。
链接地址: http://www.djcxy.com/p/8521.html