Rest is 何

39
REST IS Yutaka Kinjo

description

社内勉強会用

Transcript of Rest is 何

Page 1: Rest is 何

REST IS 何Yutaka Kinjo

Page 2: Rest is 何

CONCEPT

Page 3: Rest is 何

リソース指向resource

Page 4: Rest is 何

リソース指向resource

PS4 のスペック情報

株式会社OCC の事業概要

Redmine のチケット

OCC のロゴ

10 番目の素数

金城裕の2014/2/11 の blog

リソース例

Page 5: Rest is 何

リソース指向resource参照に値するものすべてをリソースとして捉える

リソース例

Page 6: Rest is 何

金城裕のBLOG

resource blog

リソース例

Page 7: Rest is 何

blog

blog

blog

http://hatena/entry/2014/02/11/

http://hatena/entry/2014/02/01/

http://hatena/entry/2012/08/18/

Page 8: Rest is 何

blog

blog

blog

http://hatena/entry/2014/02/11/

http://hatena/entry/2014/02/01/

http://hatena/entry/2012/08/18/

URIを識別子として持つ

URI と1対1に紐づく

Page 9: Rest is 何

blog

blog

blog

http://hatena/entry/2014/02/11/

http://hatena/entry/2014/02/01/

http://hatena/entry/2012/08/18/

構造化されている

URI : http://hatena/entry/2012/08/18/ !

hatena の entry の 2012年 の 8月 の 18日 の blog  

Page 10: Rest is 何

FEATURE

Page 11: Rest is 何

表現の提供

resourcexml

json

html

text

同じリソースでも、違った表現を提供する

Page 12: Rest is 何

表現の提供

resourcexml

json

html

text

同じリソースでも、違った表現を提供する

Page 13: Rest is 何

統一インターフェース

resourceclient

Response

RequestGET POST PUT(2/2) PATCH DELETE HEAD  

Page 14: Rest is 何

リソースの情報を取得する

GET

何度GETしても同じ情報が得られる

GETでリソースの情報を書き換えない

GET POST PUT(2/2) PATCH DELETE HEAD  

統一インターフェース

resourceclient

Page 15: Rest is 何

リソースを新たなURIに割り当てるURIは受け取る側が決める(サーバ)

GET POST PUT(2/2) PATCH DELETE HEAD  

POST

統一インターフェース

resourceclient resource

Page 16: Rest is 何

リソースを新たなURIに割り当てるURIは送る側が決める(クライアント)

PUT

統一インターフェース

resourceclient

GET POST PUT(1/2) PATCH DELETE HEAD  

resource

冪等性を満たす

Page 17: Rest is 何

既存のリソースを更新する

GET POST PUT(2/2) PATCH DELETE HEAD  

PUT

統一インターフェース

client resourceresource

冪等性を満たす

Page 18: Rest is 何

既存のリソースを更新する

統一インターフェース

client resourceresource

冪等性を満たさなくていい

GET POST PUT(2/2) PATCH DELETE HEAD  

(PUTとの違い)

PATCH

Page 19: Rest is 何

既存のリソースを削除する

統一インターフェース

client

GET POST PUT(2/2) PATCH DELETE HEAD  

DELETE

Page 20: Rest is 何

META data を取得する

統一インターフェース

client

META DATA

GET POST PUT(2/2) PATCH DELETE HEAD  

HEAD

resource

Page 21: Rest is 何

アドレス可能性

resource

http://somewhere/entry/2012/08/18/

Page 22: Rest is 何

ステートレス

Page 23: Rest is 何

SUMMARY

Page 24: Rest is 何

• リソース指向 • 複数の表現方法 • 統一インターフェース • アクセス可能性 • ステートレス

REST の コンセプトと特徴

Page 25: Rest is 何

EXAMPLE

Page 26: Rest is 何

BLOG

resource blog

client browser

Page 27: Rest is 何

GET

ブログの情報をHTMLで取得

著者名、タイトル、内容、タグ 日付、広告

GET POST PUT(2/2) PATCH DELETE HEAD  

統一インターフェース

blogbrowser

HTML

http://hatena/entry/2012/08/18/

Page 28: Rest is 何

ブログを新しく投稿するURIは受け取る側が決める(サーバ)

GET POST PUT(2/2) PATCH DELETE HEAD  

POST

統一インターフェース

blogbrowser blog

投稿日付から割り当てる

Page 29: Rest is 何

ブログを新しく投稿するURIは送る側が決める(クライアント)

PUT

統一インターフェース

blogbrowser

GET POST PUT(1/2) PATCH DELETE HEAD  

blog

予約投稿

Page 30: Rest is 何

既存のブログを編集する

GET POST PUT(2/2) PATCH DELETE HEAD  

PUT

統一インターフェース

browser resourceblog

冪等性を満たす更新日付を変更してはいけない

Page 31: Rest is 何

既存のブログを更新する

統一インターフェース

browser resourceblog

冪等性を満たさなくていい

GET POST PUT(2/2) PATCH DELETE HEAD  

(PUTとの違い)

PATCH

更新日付を変更してもいい

Page 32: Rest is 何

ブログを削除する

統一インターフェース

browser

GET POST PUT(2/2) PATCH DELETE HEAD  

DELETE

Page 33: Rest is 何

REST VS SOAP

Page 34: Rest is 何

REST IS Representational State Transfer

Soft ware architecture

SOAP IS

Simple Object Access Protocol

protocol

http://www.slideshare.net/jlupox/rest-11858541

Page 35: Rest is 何

REST IS Representational State Transfer

Soft ware architecture

SOAP IS

Simple Object Access Protocol

protocol

http://www.slideshare.net/jlupox/rest-11858541

extends XML-RPC

ref

Page 36: Rest is 何

REST IS Representational State Transfer

リソースに注目

Simple Object Access Protocol

業務ロジックに注目

URLのみでやりとり

流行ってる 流行ってた(?

XML-RPCSOAP IS

WSDLで定義

Page 37: Rest is 何

REST IS Representational State Transfer

リソースに注目

Simple Object Access Protocol

業務ロジックに注目

URLのみでやりとり

XML-RPCSOAP IS

WSDLで定義

流行ってる 流行ってた(?

http://www.publickey1.jp/blog/10/restsoapwebws-i.htmlref

Page 38: Rest is 何

http://www.publickey1.jp/blog/10/restsoapwebws-i.html

http://spf13.com/post/soap-vs-rest/

http://labo.mamezou.com/special/sp_013/sp_013_001.html

参考

http://ja.wikipedia.org/wiki/REST

Page 39: Rest is 何

/* END */