What is RESTful Web Service ??
● 符合 REST Constraints 的 Web Service 設計
Q : HTTP 不就是 REST 的實作了嗎??那到底該怎麼設計
RESTful Web Service ??
A : 只要善用 HTTP 就對了!!
http://www.history.com/this-day-in-history/united-states-nicknamed-uncle-sam
Slide 17
Slide 17 text
傳統 Web Service 設計
●設計書籍管理系統
●新增、刪除、修改、查詢 - CRUD
●XML Web Service
Slide 18
Slide 18 text
Web Service 傳統設計 (1)
● Web Service 網址 /books
● 新增書籍
create
I hate the REST
Response : ok|fail
● 修改書籍
edit
I hate REST very much
Response : ok|fail
Slide 19
Slide 19 text
Web Service 傳統設計 (1)
● 刪除書籍
delete
A0010
Response : ok|fail
● 查詢書籍
search
A0010
Response : ok|fail
Slide 20
Slide 20 text
Web Service 傳統設計 (2) 改良!?
● 更直覺的網址、更簡易 XML 內文、更通用的回應格式
● 新增書籍 /books/create
I hate the REST
● 修改書籍 /books/update
I hate REST very much
Slide 21
Slide 21 text
Web Service 傳統設計 (2) 改良!?
● 刪除書籍 /books/delete
A0010
● 查詢書籍 /books/get
A0010
Slide 22
Slide 22 text
Web Service 傳統設計 (3) SOAP
SOAP Request
classifieds
Slide 23
Slide 23 text
Web Service 傳統設計 (3) SOAP
SOAP Response
http://schemas...
http://xxx.com/MyService
28BC11433905662036
classifieds
Slide 24
Slide 24 text
引述:How I Explained REST to My Wife
很遺憾,多數人為了達到同樣的目標,忙著用不同的方法創造出
複雜且不易使用的設計。不但名詞 (Nouns) 不通用,且動詞
(Verbs) 也不多態。我們拋棄了過去幾十年的失敗經驗,再度重
蹈覆轍。我們使用 HTTP 不僅僅是幫助我們使用網路,而卻忽略
了 HTTP Simplicity 的設計初衷與理念,得到的卻是華而不實
而絢麗的工具。
http://bellsee2.blogspot.tw/2011/01/pagliacci.html
Slide 25
Slide 25 text
遵循 HTTP 設計 RESTful Web Service
● Nouns
為你的資源進行 URL 定義
● Verbs
選擇適合的 Method 動詞
GET, POST, PUT, DELETE
● Content Types
選擇 Content-type
ex: XML / JSON / HTML
http://www.onlamp.com/pub/a/onlamp/2008/02/19/developing-restful-web-services-in-perl.html
Slide 26
Slide 26 text
RESTful Web Service 規格
功能 URL HTTP
Method
Resquest Response Status
Code
新增 /books POST
REST1
200|401
刪除 /books/{isbn} DELETE 200|401|404
修改 /books/{isbn} PUT
REST2
200|401|404
查詢 /books/{isbn} GET
REST1
200|404
Content-type:application/xml, allpication/json,
text/html