スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

JAX-RSによるRESTfulなWebサービス

Webサービスの構築をSOAPではなく、RESTに基づいたJavaEE標準のJAX-RSで試してみた。

開発環境はNetBeans7.4を使用し、プロジェクトはMavenのWebアプリケージョンを雛形とした。
参考までにpom.xmlの依存関係は以下のようにした。




javax
javaee-web-api
6.0
provided



javax.ws.rs
jsr311-api
1.1
provided


org.glassfish
javax.ejb
3.0.1
provided



サンプルでは、HTTPのGETとPOSTに対応したメソッドを用意。
POSTにおいては、@Consumes(リクエストのメディアタイプ)は「application/xml」、@Produces(レスポンスのメディアタイプ)は「application/json」としてみた。



@Path("book/{id}")
public class SampleResource {
@GET
public String pong(@PathParam("id") String id){
return "GET:" + id;
}

@POST
@Consumes("application/xml")
@Produces("application/json")
public Book receive(Book book){
book.setBookName("Restful Sample Book");
return book;
}
}

Bookクラスは、JAXBの@XmlRootElementを使ってオブジェクトとXMLとの変換を行っている。


@XmlRootElement
public class Book {
private int bookId;
private String bookName;

public int getBookId() {
return bookId;
}

public String getBookName() {
return bookName;
}

public void setBookId(int bookId) {
this.bookId = bookId;
}

public void setBookName(String bookName) {
this.bookName = bookName;
}
}

最後にApplicationConfigクラスであるが、これはJAX-RSを使う場合、Applicationを継承したクラスを定義する必要があるようだ。ちなみにメソッドは自動生成されたもので、手コーディングしたものではない。
@ApplicaitonPathで定義するベースとなるURLのみ「webresources」から「app」へ変更した。



@javax.ws.rs.ApplicationPath("app")
public class ApplicationConfig extends Application {

@Override
public Set< Class<?>> getClasses() {
Set<Class<?>> resources = new java.util.HashSet<Class<?>>();
addRestResourceClasses(resources);
return resources;
}

/**
* Do not modify addRestResourceClasses() method.
* It is automatically populated with
* all resources defined in the project.
* If required, comment out calling this method in getClasses().
*/
private void addRestResourceClasses(Set<Class<?>> resources) {
resources.add(com.apress.javaee6.SampleResource.class);
}
}

動作確認については、HTTP通信が確認できるFiddlerを使用した。

POST時のURLは以下の通り。
http://localhost:8080/restful-sample/app/book/1
最後の「1」はSampleResourceクラスで定義した@Path("book/{id}")のidに該当する。
また、Request Bobyについては以下の通り。




  1


実行すると、ちゃんとJSON形式で返却される。

この手軽さには驚きだ。


スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

bookmount8

Author:bookmount8
システムエンジニア。サーバーサイドでjavaを扱うことが多い。最近は、ミドルやフロント周りも関心あり。

最新記事
カテゴリ
検索フォーム
最新コメント
月別アーカイブ
これまでの訪問者数
ブロとも申請フォーム

この人とブロともになる

RSSリンクの表示
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。