SlideShare uma empresa Scribd logo
1 de 136
Baixar para ler offline
第1回
 RESTful
Webサービス
  読書会
自己紹介
kunit
高橋邦彦
    PHP
Programmer
Mapleという
Web Application
 Framework を
   作ってます
次期バージョン
  Maple4を
RESTfulにしたいと
  思ってます
さて
本題へ
第2章
Webサービス
クライアントの
  作成
2.1
Webサービスは
 Webサイト
あらすじ
Webサービスに
  便利な
 ライブラリ
常に
存在するとは
 限らない
ので
HTTP
Requestと
HTTP
Responseを
直接操作する
プログラムを
いろんな
 言語で
書いてみよう
だが
いろんな
言語を
使って
今日ここで
実行するのは
大変なので
実際に
実行するのは
Ruby
のみです
RESTful
Webサービス
基本的な
 HTTP
クライアント
Yahoo!の
Web検索
ここで
実際に実行
このRubyの
サンプルでは
HTTP Requestの
    送信
標準ライブラリ
 open-uri
出力の解析
標準ライブラリ
 REXML
一般化すると
(1)
HTTP Requestに
 含めるデータを
    考える
HTTP Method
     URI
HTTP Header
 Entity Body
(2)
dataを
HTTP Request
   として
  組み立てて
HTTP Server
   送信
(3)
Response
 dataを
  解析
Response Code
   Header
 Entity Body
第2章は
これをいろんな
  言語で
やってみてます
けど
実演するのは
Rubyのみです
(くどいけど)
この章では
 いちいち
この基本構造を
 書くけど
ふつうは
  ラッパーを
   作成する
(か、あるものを使う)
いろんな
ラッパーが
用意されてるが
やりかた
ばらばら
WADL
Web
Application
Description
 Language
RESTful
 Serviceを
 記述できる
語彙を持つ言語
SOAPでは
 WSDL
ActiveResource
Ruby on Rails
Web Serviceの
クライアントの
 作成が簡単
第2章では
説明しないよ
2.2
del.icio.us:
サンプルアプリケーション
ここからは
 del.icio.usの
Web Serviceに
 アクセスする
けど
del.icio.us
よくない!
del.icio.usの
Web Serivceの
   設計は
RESTfulじゃない
https://api.del.icio.us/v1/posts/add
https://api.del.icio.us/v1/tags/rename
Requestは
   全て
GET Method
URIに
動詞が登場
よろしくない
なぜ
del.icio.usを
選んだの?
(1)
理解しやすい
よく知られてる
使いやすい
(2)
記述的ではなく
規範的であることを
明確にするため
サーバは理想主義
クライアントは実用主義
自分がすることには
  保守的であれ。
他人から受け取るものには
   寛容であれ。
(3)
7章の
伏線
7章では
ちゃんと
RESTfulに
つくるよ
これ以降の
サンプル
api.del.icio.usに
    https接続して
GET /v1/posts/recent
     をRequest
Responseを解析して
 ブックマークの
   href属性と
description属性を
標準出力に書き出す
2.3
リクエストの作成:
HTTPライブラリ
いろんな言語の
HTTPライブラリを
   紹介
必要となる
 機能
HTTPSと
SSL証明書の
  検証
メソッドサポート
 GET HEAD
 POST PUT
  DELETE
PUTまたはPOSTの
Entity Bodyとして
送信されるデータを
カスタマイズできる
HTTP Headerを
カスタマイズできる
Responseの
Entity Body以外に
Response Codeと
  Headerにも
 アクセスできる
HTTP Proxy経由で
   通信できる
ここで
 Rubyの
サンプル実演
2.4
レスポンスの処理:
 XMLパーサー
Web Serviceの
Entity Bodyは
通常
XML Document
なので
 XMLの
パースが必要
XMLパーサは
3種類ある
ドキュメント
ベースの手法
DOM
Document
 Object
 Model
扱うのが
 容易
ランダムに
アクセスが
できる
ただし
ドキュメント全体を
 扱う必要がある
大きな
ドキュメントだと
  メモリを
 大量に食う
イベントベース
 の手法
(2種類)
ドキュメントベースの
 手法に比べて
  効率がよい
ただし
不正なXMLに
  弱い
SAX
Simple API
    for
   XML
複雑になるが
 一部分だけ
扱いたいときに
  便利
pull Parser
SAXより
扱いたい部分が
多い場合に便利
XMLパーサは
その時々で
 使い分け
ここで
 Rubyの
サンプル実演
2.5
JSONパーサー:
 直列化された
 データの処理
Web Serviceが
返すドキュメントは
XMLだけじゃないよ
JSONで
単純なデータ構造
にして返すものが
 増えてきた
数値
配列
ハッシュ
なぜ
JSON?
Web Serviceを
 受け取るのが
 JavaScriptと
いうのが多いから
ここで
 Rubyの
サンプル実演
もしかして
筆者
JSON嫌い?
2.6
WADLによる
クライアントの
  簡易化
パターンがあるなら
 もっと簡単に
 扱えないの?
そこで
WADL
Web
Application
Description
 Language
詳しい説明は
9章まで待て
何ヶ月後?
WADLの
 導入は
進んでいない
なぜ?
(参加者に質問)
ここで
 Rubyの
サンプル実演
結論
Pythonの
人も呼びたい
ご静聴
ありがとう
ございました

Mais conteúdo relacionado

Destaque (7)

Feigelson Denzyl at 4th Athens Music Forum
Feigelson Denzyl at 4th Athens Music ForumFeigelson Denzyl at 4th Athens Music Forum
Feigelson Denzyl at 4th Athens Music Forum
 
Números y más números
Números y más númerosNúmeros y más números
Números y más números
 
Redes Sociales
Redes SocialesRedes Sociales
Redes Sociales
 
Rat
RatRat
Rat
 
Social networks and You !
Social networks and You !Social networks and You !
Social networks and You !
 
Hans
HansHans
Hans
 
We Have A Big Backyard
We Have A Big BackyardWe Have A Big Backyard
We Have A Big Backyard
 

Semelhante a Restful Web Service Ch2

50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック
miso- soup3
 
サーバーの初歩的な話セミナー@大阪20120901
サーバーの初歩的な話セミナー@大阪20120901サーバーの初歩的な話セミナー@大阪20120901
サーバーの初歩的な話セミナー@大阪20120901
Masayuki Abe
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】
Kikunaga Taishi
 

Semelhante a Restful Web Service Ch2 (20)

REST APIに入門する。
REST APIに入門する。REST APIに入門する。
REST APIに入門する。
 
スクリプト言語PHP攻略法
スクリプト言語PHP攻略法スクリプト言語PHP攻略法
スクリプト言語PHP攻略法
 
50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック
 
『RESTful Web サービス』読書会 第4回 9章 説明資料
『RESTful Web サービス』読書会 第4回 9章 説明資料『RESTful Web サービス』読書会 第4回 9章 説明資料
『RESTful Web サービス』読書会 第4回 9章 説明資料
 
勉強会資料①
勉強会資料①勉強会資料①
勉強会資料①
 
Rest ful api設計入門
Rest ful api設計入門Rest ful api設計入門
Rest ful api設計入門
 
[BurpSuiteJapan]HTTP基礎入門
[BurpSuiteJapan]HTTP基礎入門[BurpSuiteJapan]HTTP基礎入門
[BurpSuiteJapan]HTTP基礎入門
 
RESTfulとは
RESTfulとはRESTfulとは
RESTfulとは
 
20171005 告白に学ぶ http status code
20171005 告白に学ぶ http status code20171005 告白に学ぶ http status code
20171005 告白に学ぶ http status code
 
REST 入門
REST 入門REST 入門
REST 入門
 
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
 
サーバーの初歩的な話セミナー@大阪20120901
サーバーの初歩的な話セミナー@大阪20120901サーバーの初歩的な話セミナー@大阪20120901
サーバーの初歩的な話セミナー@大阪20120901
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】
 
最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)最新PHP事情 (2000年7月22日,PHPカンファレンス)
最新PHP事情 (2000年7月22日,PHPカンファレンス)
 
BEAR.Sunday@phpcon2012
BEAR.Sunday@phpcon2012BEAR.Sunday@phpcon2012
BEAR.Sunday@phpcon2012
 
Red Hat Enterprise Linux 7.1 Kubernetes入門
Red Hat Enterprise Linux 7.1 Kubernetes入門Red Hat Enterprise Linux 7.1 Kubernetes入門
Red Hat Enterprise Linux 7.1 Kubernetes入門
 
Php s1
Php s1Php s1
Php s1
 
Http
HttpHttp
Http
 
RESTful #とは RailsスタイルからRESTを学ぼう
RESTful #とは RailsスタイルからRESTを学ぼうRESTful #とは RailsスタイルからRESTを学ぼう
RESTful #とは RailsスタイルからRESTを学ぼう
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 

Restful Web Service Ch2