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

501 views

Published on

  • Be the first to comment

  • Be the first to like this

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

  1. 1. 1 2CLOUD 整合雲雲服務 – 3RD PARTY API CH Restful Box.net API
  2. 2. RESTFUL• Representational State Transfer,簡稱REST,是Roy Fielding博士在2000年他的博士論文中提出來的一種軟件 架構風格。• 目前在三種主流的Web服務實現方案,最為簡潔。 • Amazon.com提供接近REST風格的Web服務進行圖書查找;雅虎 提供的Web服務也是REST風格的。 • Google、Dropbox and more 2
  3. 3. RESTFUL• REST並非發明全新的架構。• REST是設計風格而不是標準。• REST通常基於使用HTTP,URI,和XML以及HTML這些現有 的廣泛流行的協議和標準。 3
  4. 4. RESTFUL• 資源是由URI來指定。• 對資源的操作包括獲取、創建、修改和刪除資源,這些操 作正好對應HTTP協議提供的GET、POST、PUT和DELETE 方法。• 通過操作資源的表形來操作資源。• 資源的表現形式則是XML或者HTML,取決於讀者是機器 還是人,是消費web服務的客戶軟件還是web瀏覽器。 當然也可以是任何其他的格式。 4
  5. 5. RESTFUL• REST的要求• 客戶端和服務器結構• 連接協議具有無狀態性• 能夠利用Cache機制增進性能• 層次化的系統• 隨需代碼 - Javascript (可選) 5
  6. 6. RESTFUL• 關於狀態 • 應該注意區別應用的狀態和連接協議的狀態。REST對於連接的無狀 態性實際上要求每次經過無狀態的連接協議傳送的信息必須包含應 用中所有的狀態信息。 6
  7. 7. RESTFUL• 這種通訊協定 protocol (在WWW中即用HTTP) 包含以下 特色: • 使用者端/伺服器端 Client/Server • 狀態無關 Stateless • 可以快取 Cacheable • 分層的 Layered• 符合 REST principles 的系統稱做 RESTful。 7
  8. 8. RESTFUL• 優點 • 不必維持連結狀態,大大改善 server 的 scalability 能力。這表示 不同server可以處理同一串 requests。 • 一個瀏覽器就可以存取任一應用程式跟資源,client 端不需使用別 的軟體。 • 在HTTP之上不依存其他機制跟軟體。相對於其他疊加在HTTP協議 之上的機制,REST的軟件依賴性更小 • 跟其他連結方式相比(如RPC),可以提供相等的功能。 • 不需要其他的 discovery 機制,因為使用超連結了。 • 長期的相容性更好 • 如同HTML這種文件具有後前及向後的相容能力 • 支援新的內容格式不需要丟掉舊的 8
  9. 9. RESTFUL• 不像基於SOAP的Web服務,RESTful Web服務並沒有的 「正式」標準。• 這是因為REST是一種架構,而SOAP只是一個協議。雖然 REST不是一個標準,但在實現RESTful Web服務時可以使 用其他各種標準(比如HTTP,URL,XML,PNG等)。 9
  10. 10. RESTFUL• RESTful Web 服務• 是一個使用HTTP並遵循REST原則的Web服務。它從以下 三個方面資源進行定義: • URI,比如:http://example.com/resources/。 • Web服務接受與返回的互聯網媒體類型,比如:JSON,XML , YAML 等。 • Web服務在該資源上所支持的一系列請求方法(比如:POST, GET,PUT或DELETE)。 10
  11. 11. RESTFULHTTP 請求方法在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. 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. 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. 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
  15. 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> 15
  16. 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. 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. 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. 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&params[]=nozip 19
  20. 20. BOX.NET API 20
  21. 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&params[]=nozip 21
  22. 22. BOX.NET API• eBook 下清單 22
  23. 23. BOX.NET API 23
  24. 24. BOX.NET API• 展開Apple目錄下 24
  25. 25. BOX.NET API 25
  26. 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}&para ms[]=nozip 26
  27. 27. BOX.NET API 27
  28. 28. BOX.NET API• Java Code Sample demo 28

×