如何使用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

上一篇: How to get the object from an API REST with Spring MVC

下一篇: How to make remote REST call inside Node.js? any CURL?