@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傳送分享
 
其它文章
沒有留言:
張貼留言