Your SlideShare is downloading. ×
開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

338
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
338
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 1 2CLOUD 整合雲雲服務 – 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
  • 3. RESTFUL• REST並非發明全新的架構。• REST是設計風格而不是標準。• REST通常基於使用HTTP,URI,和XML以及HTML這些現有 的廣泛流行的協議和標準。 3
  • 4. RESTFUL• 資源是由URI來指定。• 對資源的操作包括獲取、創建、修改和刪除資源,這些操 作正好對應HTTP協議提供的GET、POST、PUT和DELETE 方法。• 通過操作資源的表形來操作資源。• 資源的表現形式則是XML或者HTML,取決於讀者是機器 還是人,是消費web服務的客戶軟件還是web瀏覽器。 當然也可以是任何其他的格式。 4
  • 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
  • 9. RESTFUL• 不像基於SOAP的Web服務,RESTful Web服務並沒有的 「正式」標準。• 這是因為REST是一種架構,而SOAP只是一個協議。雖然 REST不是一個標準,但在實現RESTful Web服務時可以使 用其他各種標準(比如HTTP,URL,XML,PNG等)。 9
  • 10. RESTFUL• RESTful Web 服務• 是一個使用HTTP並遵循REST原則的Web服務。它從以下 三個方面資源進行定義: • URI,比如:http://example.com/resources/。 • Web服務接受與返回的互聯網媒體類型,比如:JSON,XML , YAML 等。 • Web服務在該資源上所支持的一系列請求方法(比如:POST, GET,PUT或DELETE)。 10
  • 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. 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
  • 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. 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&params[]=nozip 19
  • 20. BOX.NET API 20
  • 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. BOX.NET API• eBook 下清單 22
  • 23. BOX.NET API 23
  • 24. BOX.NET API• 展開Apple目錄下 24
  • 25. BOX.NET API 25
  • 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. BOX.NET API 27
  • 28. BOX.NET API• Java Code Sample demo 28