レスポンスの形式
【サービスクラス】
package jp.glory.ui.service; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import jp.glory.ui.service.response.TestResponseBean; @Path("produce") public class ProduceService { @POST @Path("html") @Produces(MediaType.TEXT_HTML) public String getByHtml() { StringBuilder builder = new StringBuilder(); builder.append("<html>"); builder.append("<head>"); builder.append("<title>サンプル</title>"); builder.append("</head>"); builder.append("<body>"); builder.append("<font color='red'>TEST</font>"); builder.append("</body>"); builder.append("</html>"); return builder.toString(); } @POST @Path("json") @Produces(MediaType.APPLICATION_JSON) public TestResponseBean getByJson() { TestResponseBean response = new TestResponseBean(); response.setName("Hoge"); response.setYear(1986); return response; } @POST @Path("xml") @Produces(MediaType.APPLICATION_XML) public TestResponseBean getByXml() { TestResponseBean response = new TestResponseBean(); response.setName("Hoge"); response.setYear(1986); return response; } }
Producesアノテーションで
返却するレスポンスの形式を指定します。
HTML形式ではHTMLを作成しています。
(こういうやり方はやらないと思いますが、サンプルなので・・・)
【レスポンスBean】
package jp.glory.ui.service.response; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name = "response") public class TestResponseBean { private String name = null; private Integer year = null; public String getName() { return name; } public void setName(final String name) { this.name = name; } public Integer getYear() { return year; } public void setYear(final Integer year) { this.year = year; } }
JSON形式、XML形式では
レスポンス用にBeanを返却していました。
返却するBeanには
javax.xml.bind.annotation.XmlRootElementアノテーションをつける必要があります。
【サンプル実行ページ】
<html> <head> <title>JAX-RSサンプル</title> <style type="text/css"> .area { margin-bottom: 20px; } </style> </head> <body> <div class="area" > <form action="../service/produce/html" method="post"> <input type="submit" value="HTML Response"/> </form> </div> <div class="area" > <form action="../service/produce/json" method="post"> <input type="submit" value="JSON Response"/> </form> </div> <div class="area" > <form action="../service/produce/xml" method="post"> <input type="submit" value="XML Response"/> </form> </div> </body> </html>