Restful Web Service Ch2

1,353 views
1,316 views

Published on

2008.4.12 RWS Reading

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,353
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Restful Web Service Ch2

  1. 1. 第1回 RESTfulWebサービス 読書会
  2. 2. 自己紹介
  3. 3. kunit
  4. 4. 高橋邦彦 PHPProgrammer
  5. 5. MapleというWeb Application Framework を 作ってます
  6. 6. 次期バージョン Maple4をRESTfulにしたいと 思ってます
  7. 7. さて本題へ
  8. 8. 第2章Webサービスクライアントの 作成
  9. 9. 2.1
  10. 10. Webサービスは Webサイト
  11. 11. あらすじ
  12. 12. Webサービスに 便利な ライブラリ
  13. 13. 常に存在するとは 限らない
  14. 14. ので
  15. 15. HTTPRequestと
  16. 16. HTTPResponseを
  17. 17. 直接操作するプログラムを
  18. 18. いろんな 言語で書いてみよう
  19. 19. だが
  20. 20. いろんな言語を使って
  21. 21. 今日ここで実行するのは大変なので
  22. 22. 実際に実行するのは
  23. 23. Rubyのみです
  24. 24. RESTfulWebサービス
  25. 25. 基本的な HTTPクライアント
  26. 26. Yahoo!のWeb検索
  27. 27. ここで実際に実行
  28. 28. このRubyのサンプルでは
  29. 29. HTTP Requestの 送信
  30. 30. 標準ライブラリ open-uri
  31. 31. 出力の解析
  32. 32. 標準ライブラリ REXML
  33. 33. 一般化すると
  34. 34. (1)
  35. 35. HTTP Requestに 含めるデータを 考える
  36. 36. HTTP Method URIHTTP Header Entity Body
  37. 37. (2)
  38. 38. dataをHTTP Request として 組み立てて
  39. 39. HTTP Server 送信
  40. 40. (3)
  41. 41. Response dataを 解析
  42. 42. Response Code Header Entity Body
  43. 43. 第2章はこれをいろんな 言語でやってみてます
  44. 44. けど実演するのはRubyのみです(くどいけど)
  45. 45. この章では いちいちこの基本構造を 書くけど
  46. 46. ふつうは ラッパーを 作成する(か、あるものを使う)
  47. 47. いろんなラッパーが用意されてるが
  48. 48. やりかたばらばら
  49. 49. WADL
  50. 50. WebApplicationDescription Language
  51. 51. RESTful Serviceを 記述できる語彙を持つ言語
  52. 52. SOAPでは WSDL
  53. 53. ActiveResource
  54. 54. Ruby on Rails
  55. 55. Web Serviceのクライアントの 作成が簡単
  56. 56. 第2章では説明しないよ
  57. 57. 2.2
  58. 58. del.icio.us:サンプルアプリケーション
  59. 59. ここからは del.icio.usのWeb Serviceに アクセスする
  60. 60. けどdel.icio.usよくない!
  61. 61. del.icio.usのWeb Serivceの 設計はRESTfulじゃない
  62. 62. https://api.del.icio.us/v1/posts/addhttps://api.del.icio.us/v1/tags/rename
  63. 63. Requestは 全てGET Method
  64. 64. URIに動詞が登場
  65. 65. よろしくない
  66. 66. なぜdel.icio.usを選んだの?
  67. 67. (1)
  68. 68. 理解しやすいよく知られてる使いやすい
  69. 69. (2)
  70. 70. 記述的ではなく規範的であることを明確にするため
  71. 71. サーバは理想主義クライアントは実用主義
  72. 72. 自分がすることには 保守的であれ。他人から受け取るものには 寛容であれ。
  73. 73. (3)
  74. 74. 7章の伏線
  75. 75. 7章ではちゃんとRESTfulにつくるよ
  76. 76. これ以降のサンプル
  77. 77. api.del.icio.usに https接続してGET /v1/posts/recent をRequest
  78. 78. Responseを解析して ブックマークの href属性とdescription属性を標準出力に書き出す
  79. 79. 2.3
  80. 80. リクエストの作成:HTTPライブラリ
  81. 81. いろんな言語のHTTPライブラリを 紹介
  82. 82. 必要となる 機能
  83. 83. HTTPSとSSL証明書の 検証
  84. 84. メソッドサポート GET HEAD POST PUT DELETE
  85. 85. PUTまたはPOSTのEntity Bodyとして送信されるデータをカスタマイズできる
  86. 86. HTTP Headerをカスタマイズできる
  87. 87. ResponseのEntity Body以外にResponse Codeと Headerにも アクセスできる
  88. 88. HTTP Proxy経由で 通信できる
  89. 89. ここで Rubyのサンプル実演
  90. 90. 2.4
  91. 91. レスポンスの処理: XMLパーサー
  92. 92. Web ServiceのEntity Bodyは
  93. 93. 通常XML Document
  94. 94. なので XMLのパースが必要
  95. 95. XMLパーサは3種類ある
  96. 96. ドキュメントベースの手法
  97. 97. DOM
  98. 98. Document Object Model
  99. 99. 扱うのが 容易
  100. 100. ランダムにアクセスができる
  101. 101. ただしドキュメント全体を 扱う必要がある
  102. 102. 大きなドキュメントだと メモリを 大量に食う
  103. 103. イベントベース の手法(2種類)
  104. 104. ドキュメントベースの 手法に比べて 効率がよい
  105. 105. ただし不正なXMLに 弱い
  106. 106. SAX
  107. 107. Simple API for XML
  108. 108. 複雑になるが 一部分だけ扱いたいときに 便利
  109. 109. pull Parser
  110. 110. SAXより扱いたい部分が多い場合に便利
  111. 111. XMLパーサはその時々で 使い分け
  112. 112. ここで Rubyのサンプル実演
  113. 113. 2.5
  114. 114. JSONパーサー: 直列化された データの処理
  115. 115. Web Serviceが返すドキュメントはXMLだけじゃないよ
  116. 116. JSONで単純なデータ構造にして返すものが 増えてきた
  117. 117. 数値配列ハッシュ
  118. 118. なぜJSON?
  119. 119. Web Serviceを 受け取るのが JavaScriptというのが多いから
  120. 120. ここで Rubyのサンプル実演
  121. 121. もしかして
  122. 122. 筆者JSON嫌い?
  123. 123. 2.6
  124. 124. WADLによるクライアントの 簡易化
  125. 125. パターンがあるなら もっと簡単に 扱えないの?
  126. 126. そこで
  127. 127. WADL
  128. 128. WebApplicationDescription Language
  129. 129. 詳しい説明は9章まで待て
  130. 130. 何ヶ月後?
  131. 131. WADLの 導入は進んでいない
  132. 132. なぜ?(参加者に質問)
  133. 133. ここで Rubyのサンプル実演
  134. 134. 結論
  135. 135. Pythonの人も呼びたい
  136. 136. ご静聴ありがとうございました

×