本文介绍了REST(Representational State Transfer)架构风格及其在Web服务设计中的应用,包括REST的基本约束和架构元素。文中讨论了传统Web服务设计的不足,并提供了RESTful Web服务设计的最佳实践,建议采用直观的URL和简化的操作方法。最后,列举了一些成功实施RESTful架构的实际案例。
What is RESTful WebService ??
● 符合 REST Constraints 的 Web Service 設計
http://www.history.com/this-day-in-history/united-states-nicknamed-uncle-sam
Q : HTTP 不就是 REST 的實作了嗎??那到底該怎麼設計
RESTful Web Service ??
A : 只要善用 HTTP 就對了!!
17.
傳統 Web Service設計
● 設計書籍管理系統
● 新增、刪除、修改、查詢 - CRUD
● XML Web Service
18.
Web Service 傳統設計(1)
● Web Service 網址 /books
● 新增書籍
<action>create</action>
<book isbn="A0100">
<title>I hate the REST</title>
</book>
Response : <status>ok|fail</status>
● 修改書籍
<action>edit</action>
<book isbn="A0100">
<title>I hate REST very much</title>
</book>
Response : <status>ok|fail</status>
19.
Web Service 傳統設計(1)
● 刪除書籍
<action>delete</action>
<isbn>A0010</isbn>
Response : <status>ok|fail</status>
● 查詢書籍
<action>search</action>
<isbn>A0010</isbn>
Response : <status>ok|fail</status>
20.
Web Service 傳統設計(2) 改良!?
● 更直覺的網址、更簡易 XML 內文、更通用的回應格式
<response code="0" messgae="ok">
<data/>
</respone>
● 新增書籍 /books/create
<book isbn="A0100">
<title>I hate the REST</title>
</book>
● 修改書籍 /books/update
<book isbn="A0100">
<title>I hate REST very much</title>
</book>
21.
Web Service 傳統設計(2) 改良!?
● 刪除書籍 /books/delete
<isbn>A0010</isbn>
● 查詢書籍 /books/get
<isbn>A0010</isbn>
22.
Web Service 傳統設計(3) SOAP
SOAP Request
<soapenv:Envelope>
<soapenv:Body>
<req:echo xmlns:req="http://xxx.com/MyService/">
<req:category>classifieds</req:category>
</req:echo>
</soapenv:Body>
</soapenv:Envelope>