@RequestBody annotation 將 HttpRequest Body 映射到domain object,,HttpRequest 主體自動反序列化到 Java 對像上。
@ResponseBody annotation 告訴控制器返回的對象自動序列化為 JSON 並傳回 HttpResponse 對象
一、@RequestBody 及 @ResponseBody 為JSON 資料請求及回應
@RequestBody 及 @ResponseBody 不指定MediaType 預設為 APPLICATION_JSON_VALUE
APPLICATION_JSON_VALUE = application/json
(spring-web-xxx-jar org.springframework.http.MediaType)
程式:
@RequestMapping(value = "/test1",
method = RequestMethod.POST)//produces= MediaType.APPLICATION_JSON_VALUE
public @ResponseBody
Book bodyTest1(@RequestBody Book book) {
return book;
}
圖1
圖2 Book為 domain object,會將傳入參數映射到Book.java中。
圖3 測試 傳送資料為JSON格式,回應為JSON格式
測試URI:http://localhost:8080/books/test1
測試資料:
{
"id": 30,
"name": "java",
"price": "100"
}
二、@RequestBody 及 @ResponseBody 為 XML 資料請求及回應
@RequestBody 及 @ResponseBody 指定MediaType 為 APPLICATION_XML_VALUE
程式:
@RequestMapping(value = "/test2",
method = RequestMethod.POST,
produces=MediaType.APPLICATION_XML_VALUE)
public @ResponseBody
Book bodyTest2(@RequestBody Book book) {
return book;
}
圖5 pom.xml 加入dependency com.fasterxml.jackson.dataformat
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
</dependency>
參考官方文件
圖6 測試 傳送資料為XML格式,回應為XML格式
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<id>30</id>
<name>java</name>
<price>100</price>
</root>
Convert JSON To XML
用LINE傳送分享
其它文章
沒有留言:
張貼留言