開放原始碼 Ch2.5 app - oss - 3rd party api(ver 1.0)

28
CLOUD 整整整整整整 – 3RD PARTY API 專專專專專–專專專專專 專專專專專專 () CH 2 Restful Box.net API 1

description

 

Transcript of 開放原始碼 Ch2.5 app - oss - 3rd party api(ver 1.0)

Page 1: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

1C L O U D 整 合 雲 雲 服 務 – 3 R D P A R T Y A P I

專案管理軟體–管理與實務 (開放原始碼)

CH 2

RestfulBox.net API

Page 2: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

2

RESTFUL

• Representational State Transfer ,簡稱 REST ,是Roy Fielding 博士在 2000 年他的博士論文中提出來的一種軟件架構風格。

• 目前在三種主流的 Web 服務實現方案,最為簡潔。• Amazon.com 提供接近 REST 風格的 Web 服務進行圖書查找;

雅虎提供的 Web 服務也是 REST 風格的。• Google 、 Dropbox and more

Page 3: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

3

RESTFUL

• REST 並非發明全新的架構。• REST 是設計風格而不是標準。• REST 通常基於使用 HTTP , URI ,和 XML 以及 HTML

這些現有的廣泛流行的協議和標準。

Page 4: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

4

RESTFUL

• 資源是由 URI 來指定。• 對資源的操作包括獲取、創建、修改和刪除資源,這些操

作正好對應 HTTP 協議提供的 GET 、 POST 、 PUT 和DELETE 方法。

• 通過操作資源的表形來操作資源。• 資源的表現形式則是 XML 或者 HTML ,取決於讀者是機

器還是人,是消費 web 服務的客戶軟件還是 web 瀏覽器。當然也可以是任何其他的格式。

Page 5: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

5

RESTFUL

• REST 的要求• 客戶端和服務器結構• 連接協議具有無狀態性• 能夠利用 Cache 機制增進性能• 層次化的系統• 隨需代碼 - Javascript (可選)

Page 6: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

6

RESTFUL

• 關於狀態• 應該注意區別應用的狀態和連接協議的狀態。 REST 對於連接的無

狀態性實際上要求每次經過無狀態的連接協議傳送的信息必須包含應用中所有的狀態信息。

Page 7: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

7

RESTFUL

• 這種通訊協定 protocol ( 在 WWW 中即用 HTTP) 包含以下特色 :• 使用者端 / 伺服器端 Client/Server• 狀態無關 Stateless• 可以快取 Cacheable• 分層的 Layered

• 符合 REST principles 的系統稱做 RESTful 。

Page 8: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

8

RESTFUL

• 優點• 不必維持連結狀態,大大改善 server 的 scalability 能力。這

表示不同 server 可以處理同一串 requests 。• 一個瀏覽器就可以存取任一應用程式跟資源, client 端不需使用

別的軟體。• 在 HTTP 之上不依存其他機制跟軟體。相對於其他疊加在 HTTP 協

議之上的機制, REST 的軟件依賴性更小• 跟其他連結方式相比 ( 如 RPC) ,可以提供相等的功能。• 不需要其他的 discovery 機制,因為使用超連結了。• 長期的相容性更好

• 如同 HTML 這種文件具有後前及向後的相容能力• 支援新的內容格式不需要丟掉舊的

Page 9: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

9

RESTFUL

• 不像基於 SOAP 的 Web 服務, RESTful Web 服務並沒有的「正式」標準。

• 這是因為 REST 是一種架構,而 SOAP 只是一個協議。雖然 REST 不是一個標準,但在實現 RESTful Web 服務時可以使用其他各種標準(比如 HTTP , URL , XML ,PNG 等)。

Page 10: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

10

RESTFUL

• RESTful Web 服務• 是一個使用 HTTP 並遵循 REST 原則的 Web 服務。它從

以下三個方面資源進行定義:• URI ,比如: http://example.com/resources/ 。• Web 服務接受與返回的互聯網媒體類型,比如:

JSON , XML , YAML 等。• Web 服務在該資源上所支持的一系列請求方法(比如: POST ,

GET , PUT 或 DELETE )。

Page 11: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

11

RESTFUL

資源 GET PUT POST DELETE

一組資源的URI ,比如

http://example.co

m/resources/

列出 URI ,以及該資源組中每個資源的詳細信息(後者可選)。

使用給定的一組資源替換當前整組資源。

在本組資源中創建 / 追加一個新的資源。 該操作往往返回新資源的URL 。

刪除 整組資源。

單個資源的URI ,比如

http://example.co

m/resources/

142

獲取 指定的資源的詳細信息,格式可以自選一個合適的網絡媒體類型(比如:XML 、 JSON等)

替換 / 創建 指定的資源。並將其追加到相應的資源組中。

把指定的資源當做一個資源組,並在其下創建 / 追加一個新的元素,使其隸屬於當前資源。

刪除 指定的元素。

HTTP 請求方法在 RESTful Web 服務中的典型應用 [1]

Page 12: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

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>

Page 13: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

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

Page 14: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

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

Page 15: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

15

BOX.NET API

• https://www.box.net/api/1.0/rest?action=get_ticket&api_key={key}

<response><status>get_ticket_ok</status><ticket>uatpxqvq3itmesyuaigmm4edz6h4k3c2</ticket></response>

Page 16: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

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}

Page 17: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

17

BOX.NET API

• 回傳 auth_key

<response><status>get_auth_token_ok</status><auth_token>e2c7hcnr4zcqa18ibi2i30x0kdlfkuq</auth_token><user><login>[email protected]</login><email>[email protected]</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>

Page 18: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

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>[email protected]</login><email>[email protected]</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>

Page 19: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

19

BOX.NET API

• 撈取根目錄清單 get_account_tree• https://www.box.net/api/1.0/rest?

action=get_account_tree&api_key={api_key}&auth_token={auth_key}&folder_id=0&params[]=nozip

Page 20: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

20

BOX.NET API

Page 21: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

21

BOX.NET API

• 抓取 eBook 下清單• https://www.box.net/api/1.0/rest?

action=get_account_tree&api_key={api_key}&auth_token={auth_key}&folder_id=96712292&params[]=nozip

Page 22: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

22

BOX.NET API

• eBook 下清單

Page 23: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

23

BOX.NET API

Page 24: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

24

BOX.NET API

• 展開 Apple 目錄下

Page 25: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

25

BOX.NET API

Page 26: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

26

BOX.NET API

• 朋友清單 get_friends• https://www.box.net/api/1.0/rest?

action=get_friends&api_key={api_key}&auth_token={auth_key}&params[]=nozip

Page 27: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

27

BOX.NET API

Page 28: 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)

28

BOX.NET API

• Java Code Sample demo