• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Jersey勉強会
 

Jersey勉強会

on

  • 1,107 views

アプレッソ開発部

アプレッソ開発部
部内勉強会

Statistics

Views

Total Views
1,107
Views on SlideShare
979
Embed Views
128

Actions

Likes
2
Downloads
8
Comments
0

2 Embeds 128

http://dstn.appresso.com 126
https://www.chatwork.com 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Jersey勉強会 Jersey勉強会 Presentation Transcript

    • Jersey勉強会 -サクサク分かるRESTfulなWebアプリの作り 方 開発部 土岐
    • RESTとは
    • Representational State Transfer リソース(URI)に対してうんたら するアーキテクチャスタイル
    • 例えば • 特定のユーザーを削除するときの呼び出 し方 • http://test.com/deletePerson(パラメータで ID指定) – RESTfulではなくてダサい • http://test.com/person/toki (DELETEメソッド を指定) – RESTfulでかっこいい
    • リソースとは • リソースとは、Web上の情報である • 世界中の無数のリソースは、それぞれURI で一意な名前を持つ • プログラムはURIに対してアクセスして各 種処理を行う [参考文献] 『Webを支える技術』 山本陽平著技術評 論社
    • JAX-RS • JSR-311で定義された、JavaでRESTアーキテクチャに則った Webサービスを提供するための試用 • 準拠したものとして以下のものがある – Jersey • Oracleによるリファレンス実装 – Apache CXF • Apacheプロジェクト(もともと別プロジェクト?) – Apache Wink • Apacheプロジェクト – RESTEasy • JBOSSプロジェクト – Restlet • JAX-RS以前からあるRESTライブラリ • いろいろあるけど、Jerseyが一番情報も多いし無難っぽいので Jerseyをとりあえず取り上げます
    • やってみよう
    • 事前準備 • プロジェクトの作成 • Jerseyライブラリ追加 – asm-3.3.1.jar – jersey-bundle-1.12.jar – jersey-core-1.12.jar – jersey-multipart-1.12.jar • JettyのWebAppとして登録
    • サーブレットディスパッチャー 登録 web.xmlに追加 <servlet> <servlet-name>Jersey REST Service</servlet-name> <servlet-class> com.sun.jersey.spi.container.servlet.ServletContainer ←ディスパッチャのサーブレット(固 定) </servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>resttest</param-value> ←リソース(処理を記述するJavaクラス)のパッケー ジ名 </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Jersey REST Service</servlet-name> <url-pattern>/rest/*</url-pattern> ←ディスパッチするURLパターン </servlet-mapping>
    • 後はJerseyが勝手にリソースと なるクラスを見つけてくれ る!
    • GETで プレーンテキストを返す例
    • @Path("/hello") public class HelloWorld { @GET @Produces(MediaType.TEXT_PLAIN) public String sayHello() { return "Hello World"; } }
    • ポイント • @Pathでパスを指定 – これを指定しているクラスをJerseyがリソース とみなす • @GETでメソッド指定 – 指定されたHTTPメソッドをここで受け入れる • @ProducesでレスポンスのMIMEタイプを 指定
    • POSTでJSONデータを送り ユーザー登録を行う例
    • @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public PersonModel createPersonJson(PersonModel person) { person.setName("JSON呼び出し!"); return person; }
    • ポイント • @Consumesで受け入れるContent-Typeを指 定 • JAXBを使用したバインディングで、 JavaBeanのオブジェクトのやり取りが可能 – JSON、XMLなどの表現形式を意識しなくてい い! – JAXBに関しては深くは触れません
    • PathParamを受け取って削除する 例 (/person/tokiにDELETEでアクセスみたいな感じ)
    • @DELETE @Path("{name}") public void detelePerson(@PathParam("name") String name) { System.out.println(name); }
    • ポイント • @PathParamで、アクセスされたURI内のパ ラメータにアクセス可能 – 予め@Pathで変数宣言をしておく • 同じような感じで@FormParamでフォーム のパラメータにアクセス可能
    • その他 • 返却するオブジェクトはJavaBean、String の他、OutputStreamやバイト配列も可能 – OutputStreamはStreamingOutputにラップして 返す • ServletResponseやServletContextにアクセス する場合は@Contextアノテーションを宣 言する – フィールド、引数どちらでも可
    • まとめ • 設定は最小限、ほとんどアノテーション で作っていく – 設定ファイル地獄からの解放→今っぽい – 複雑なことをやろうとすると、いろいろと方 法が用意されていて良く出来てるなーという 印象 • JAXBバインディング便利 – ただXMLとJSONの微妙な表現の違いとかで悩 みそう