我在學習REST風格的Web服務。並且我正在創建一組簡單的Web服務。當我開始開發POST時陷入了困境。如何在REST中創建POST請求以接受JSON輸入?
我想將JSON輸入傳遞給POST方法。這是我在代碼中所做的:
@RequestMapping(value = "/create", method = RequestMethod.POST, consumes="application/x-www-form-urlencoded", produces="text/plain")
@ResponseStatus(HttpStatus.CREATED)
public @ResponseBody String createChangeRequest(MyCls mycls) {
return "YAHOOOO!!";
}
我在我的POM.xml中包含了Jackson。
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-lgpl</artifactId>
<version>1.9.13</version>
</dependency>
MyCls是一個簡單的類,有幾個getter和setter。
我從chrome簡單的REST客戶端調用上述POST服務。
URL: http://localhost:8080/MYWS/cls/create
Data: {<valid-json which corresponds to each variable in the MyCls pojo}
我看到下面的響應:
415 Unsupported Media Type
The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.
我嘗試添加標題爲在REST客戶機POST請求「應用/ JSON」 - 但這並沒有幫助。
有人可以讓我知道我在這裏失蹤了嗎?我如何自動將我的輸入JSON映射到MyCls pojo?我在這裏是否缺少任何配置?
編輯: MyCls.java
public class MyCls{
private String name;
private String email;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
name= name;
}
---similar getter and setter for email, address--
}
從鉻簡單的REST客戶端JSON:
{"name":"abc", "email":"[email protected]","address":"my address"}
編輯: 改變了我的控制方法以下,但仍出現相同的錯誤:
@RequestMapping(value = "/create", method = RequestMethod.POST, consumes="application/json", produces="text/plain")
@ResponseStatus(HttpStatus.CREATED)
public @ResponseBody String createChangeRequest(@RequestBody MyCls mycls) {
return "YAHOOOO!!";
}
你能顯示MyCls嗎? – Bart
@Bart - 用MyCls編輯這個問題。java和來自客戶端的JSON – user811433