GroovletでRestfulなサービスを作る方法
Restfulな、というと語弊がありそうだけど、要するにXMLを返すようにする方法。
まずは、Groovy+GrailsでRailsなWeb開発:CodeZine(コードジン)の記事を参照して、GAE上にGroovletでデータを登録できるフォーム画面を作る。んで、GroovyとGoogle App Engineでアプリ開発(後編) ~Googleのサービスを利用する方法
(5/6):CodeZineに、格納した値をHTMLで表示させる方法が載っているけど、この代わりに単純なXMLを返すようにして、Flexで取り扱いやすいようにするのが今回の狙い。
web.xmlに
<servlet> <servlet-name>listXml</servlet-name> <servlet-class>listXml</servlet-class> </servlet> <servlet-mapping> <servlet-name>listXml</servlet-name> <url-pattern>/listXml.xml</url-pattern> </servlet-mapping>
と追加して、listXml.groovyファイルをsrc直下に作る。これで完成。
import org.apache.tools.ant.taskdefs.Mkdir import teppeistudio.chienavi.SampleData import javax.servlet.http.* import javax.jdo.* import java.nio.charset.* import groovy.xml.* class listXml extends HttpServlet { void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { List<SampleData> datas = new ListServlet().getList() def xml = new StreamingMarkupBuilder().bind { mkp.xmlDeclaration() list { for(SampleData ob:datas) { println "id:" + ob.getId() + ", data:" + ob.getData() rec(id:ob.getId(), data:ob.getData()); } } } resp.setContentType("text/xml; charset=UTF-8") resp.writer.println xml } void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.sendRedirect("/listXml") } }
いや〜。setContentTypeでちょっとはまった。
しかしこれでGAEのデータストアを利用したRestfulサービスを作れるゾ。
Flexと組み合わせればかなりいい感じになるはず★