2014-02-18 60 views
1

我有一個Spring MVC項目,我已經配置了jackson庫來自動將響應(java對象)轉換爲json,並且它在GET請求中工作如下。如何使用Spring MVC從API REST獲取對象

@RequestMapping(method = RequestMethod.GET) 
public @ResponseBody Orders createOrder(Model model){ 

      Orders orders = new Orders(); 
      //Populate orders..... 

    return orders; 
} 

但是,當我嘗試處理POST請求,並從JSON的請求的對象,我得到錯誤「400錯誤的請求」的春天不能從JSON創建對象的訂單。我把相同的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類字符串(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" 
} 

[求助]

我錯過了放在參數名稱的名稱。

+0

你如何稱呼你的發佈方法?請求的主體是否僅包含來自GET的json? – Avi

+0

是的,身體只有JSON。 –

+1

這可能是最好的,你把你的解決方案作爲答案,以便A)這個問題被正確標記爲正在解決和B)對於將來可能有類似問題的其他人來說很明顯,你的情況出了什麼問題。 – Edd

回答

0

[解決]

我錯過了把「」參數名稱參數的名稱。

此外,該類必須有一個默認的空白構造函數,以允許傑克遜庫創建該對象。

相關問題