Weitere ähnliche Inhalte Ähnlich wie 開放原始碼 Ch2.5 app - oss - 3rd party api(ver 1.0) (20) Mehr von My own sweet home! (20) 開放原始碼 Ch2.5 app - oss - 3rd party api(ver 1.0) 1. 1 2
CLOUD 整合雲雲服務 –
3RD PARTY API CH
Restful
Box.net API
2. RESTFUL
• Representational State Transfer,簡稱REST,是Roy
Fielding博士在2000年他的博士論文中提出來的一種軟件
架構風格。
• 目前在三種主流的Web服務實現方案,最為簡潔。
• Amazon.com提供接近REST風格的Web服務進行圖書查找;雅虎
提供的Web服務也是REST風格的。
• Google、Dropbox and more
2
5. RESTFUL
• REST的要求
• 客戶端和服務器結構
• 連接協議具有無狀態性
• 能夠利用Cache機制增進性能
• 層次化的系統
• 隨需代碼 - Javascript (可選)
5
6. RESTFUL
• 關於狀態
• 應該注意區別應用的狀態和連接協議的狀態。REST對於連接的無狀
態性實際上要求每次經過無狀態的連接協議傳送的信息必須包含應
用中所有的狀態信息。
6
7. RESTFUL
• 這種通訊協定 protocol (在WWW中即用HTTP) 包含以下
特色:
• 使用者端/伺服器端 Client/Server
• 狀態無關 Stateless
• 可以快取 Cacheable
• 分層的 Layered
• 符合 REST principles 的系統稱做 RESTful。
7
8. RESTFUL
• 優點
• 不必維持連結狀態,大大改善 server 的 scalability 能力。這表示
不同server可以處理同一串 requests。
• 一個瀏覽器就可以存取任一應用程式跟資源,client 端不需使用別
的軟體。
• 在HTTP之上不依存其他機制跟軟體。相對於其他疊加在HTTP協議
之上的機制,REST的軟件依賴性更小
• 跟其他連結方式相比(如RPC),可以提供相等的功能。
• 不需要其他的 discovery 機制,因為使用超連結了。
• 長期的相容性更好
• 如同HTML這種文件具有後前及向後的相容能力
• 支援新的內容格式不需要丟掉舊的
8
10. RESTFUL
• RESTful Web 服務
• 是一個使用HTTP並遵循REST原則的Web服務。它從以下
三個方面資源進行定義:
• URI,比如:http://example.com/resources/。
• Web服務接受與返回的互聯網媒體類型,比如:JSON,XML ,
YAML 等。
• Web服務在該資源上所支持的一系列請求方法(比如:POST,
GET,PUT或DELETE)。
10
11. RESTFUL
HTTP 請求方法在RESTful Web 服務中的典型應用[1]
資源 GET PUT POST DELETE
在本組資源中
一組資源的 列出 URI,以
創建/追加一
URI,比如 及該資源組中 使用給定的一
個新的資源。
http://exam 每個資源的詳 組資源替換當 刪除 整組資源。
該操作往往返
ple.com/res 細信息(後者 前整組資源。
回新資源的
ources/ 可選)。
URL。
獲取 指定的資 把指定的資源
單個資源的 源的詳細信息, 當做一個資源
替換/創建 指
URI,比如 格式可以自選 組,並在其下
定的資源。並 刪除 指定的元
http://exam 一個合適的網 創建/追加一
將其追加到相 素。
ple.com/res 絡媒體類型 個新的元素,
應的資源組中。
ources/142 (比如:XML、 使其隸屬於當
JSON等) 前資源。
11
12. RESTFUL
• 列舉所有商品
• GET http://www.store.com/products
• 具體某一件商品
• GET http://www.store.com/product/12345
• 下單購買
• POST http://www.store.com/order
• 內容
• <purchase-order>
• <item> ... </item>
• </purchase-order>
12
13. RESTFUL
• 程式庫支援
• Restlet - http://www.restlet.org/
• JBoss RESTEasy - http://www.jboss.org/resteasy
• Jersey - http://jersey.java.net/
• 已經是JavaEE的預設實作
• Apache CXF - http://cxf.apache.org/
• Restfulie -
• http://restfulie.caelum.com.br/
• https://github.com/caelum/restfulie-java
13
14. BOX.NET API
• Box.net
• http://www.box.com/developers
• 利用 box 提供的機制來串連所開發的應用程式,整合於
個人電腦、智慧型手機、平板電腦與一般網站。
• SDKs for iOS, Android, Python, Ruby, and Java
• All of our SDKs are MIT licensed
14
16. BOX.NET API
• WEB 模式
• https://www.box.net/api/1.0/auth/{ticket_key}
• Application Desktop模式
• https://www.box.net/api/1.0/rest?action=get_auth_token&
api_key={api_key}&ticket= {ticket_key}
16
17. BOX.NET API
• 回傳auth_key
<response>
<status>get_auth_token_ok</status>
<auth_token>e2c7hcnr4zcqa18ibi2i30x0kdlfkuq</auth_token>
<user>
<login>wenhsiaoyi@gmail.com</login>
<email>wenhsiaoyi@gmail.com</email>
<access_id>301039</access_id>
<user_id>301039</user_id>
<space_amount>53687091200</space_amount>
<space_used>3295937647</space_used>
<max_upload_size>104857600</max_upload_size>
<sharing_disabled />
</user>
</response>
17
18. BOX.NET API
• get_account_info 取得使用者資訊
• https://www.box.net/api/1.0/rest?action=get_account_info
&api_key={api_key}&{auth_key}
<response>
<status>get_account_info_ok</status>
<user>
<login>wenhsiaoyi@gmail.com</login>
<email>wenhsiaoyi@gmail.com</email>
<access_id>301039</access_id>
<user_id>301039</user_id>
<space_amount>53687091200</space_amount>
<space_used>3295937647</space_used>
<max_upload_size>104857600</max_upload_size>
</user>
</response>
18
19. BOX.NET API
• 撈取根目錄清單 get_account_tree
• https://www.box.net/api/1.0/rest?action=get_acco
unt_tree&api_key={api_key}&auth_token={auth_key
}&folder_id=0¶ms[]=nozip
19
21. BOX.NET API
• 抓取 eBook下清單
• https://www.box.net/api/1.0/rest?action=get_acco
unt_tree&api_key={api_key}&auth_token={auth_key
}&folder_id=96712292¶ms[]=nozip
21
26. BOX.NET API
• 朋友清單 get_friends
• https://www.box.net/api/1.0/rest?action=get_friend
s&api_key={api_key}&auth_token={auth_key}¶
ms[]=nozip
26