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