JSONICのREST Servletを使って,JavaオブジェクトをJSONにしてレスポンスを返す。
以下のようなURLにリクエストを投げて、
http://localhost:8080/json-web/sample/person.json
こんな値を返してみたい。
{"age":"28","name":"takeshi"}
Jsonicを使えば、簡単にJsonによるWeb APIを実現することができます。
準備
Eclipseで、
新規 > その他 > Maven プロジェクト
で、「maven-archetype-webapp」を選択する。
グループIDを「json.web」とし、
アーティファクトIDを「json-web」とする。
そうすると、json-webというWebアプリケーション開発用のプロジェクトのひな形ができる。
ここのpom.xmlにまず、JSONICの依存情報を定義しよう。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>json.web</groupId> <artifactId>json-web</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>json-web Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>net.arnx</groupId> <artifactId>jsonic</artifactId> <version>1.3.3</version> </dependency> </dependencies> <build> <finalName>json-web</finalName> </build> </project>
json-webのプロジェクトで新規 > ソース・フォルダー
「java」を作ります。
ここにソースを書いていきます。
一旦ここで、Mavenでbuildしておきます。
pom.xmlを右クリックして、
実行 > Maven install
を実行します。
これで、Maven依存関係にjsonicが追加されたはずです。
では、Jsonを返すためのサービスを作ってみましょう。
package com.code.log.web; public class SampleService { public Person getPerson() { Person takeshi = new Person(); takeshi.setName("takeshi"); takeshi.setAge("28"); return takeshi; } }
まじで、これだけ。
web.xmlにJsonicのREST Servletを指定すると、呼ばれたメソッドのreturnで返したものが、Json形式になってレスポンスとして返ります。
じゃあ、web.xmlはどうなの?
こんな感じ。
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <servlet> <servlet-name>restServlet</servlet-name> <servlet-class>net.arnx.jsonic.web.RESTServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value> { "debug": true, <!-- サンプル用 --> "mappings": { "/sample/person.json": { "target":"com.code.log.web.SampleService", "method": {"GET": "getPerson"}, "verb": [ "GET" ] } } } </param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>restServlet</servlet-name> <url-pattern>*.json</url-pattern> </servlet-mapping> </web-app>
ここまで書いたら、maven installを実行して、target以下にできたwarファイルをサーブレットコンテナにデプロイしてみましょう。
こんな感じで、オブジェクトがJson形式になって返ってきました。
ディレクトリ構成は最終的にはこんな風に、シンプルになります。