首页 文章

如何使用Spring MVC从API REST获取对象

提问于
浏览
1

我有一个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 . 我把与GET方法响应相同的json文件放在一起,所以我认为该文件格式正确 .

@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.例如:

域名: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"
}

[解决了]

我错过了将“”放在参数名称的名称中 .

1 回答

  • 0

    [解决了]

    我错过了将“”放在参数名称的名称中 .

    此外,该类必须有一个默认的空白构造函数,以允许jackson库创建对象 .

相关问题