簡體   English   中英

如何使用Spring MVC從API REST獲取對象

[英]How to get the object from an API REST with Spring MVC

我有一個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的請求中獲取對象時,由於Spring無法從json創建對象Orders,我收到了錯誤“ 400 Bad Request”。 我放置了與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字符串順序)),則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"
}

[解決了]

我錯過了在參數名稱的名稱中添加“”。

[解決了]

我錯過了在參數名稱的名稱中添加“”。

此外,該類還必須具有默認的空白構造函數,以允許jackson庫創建對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM