導入 Façade REST 服務的自訂 API
當您開發行動應用程式時,通常會先從使用者介面層開始,然後使用 REST Web 服務將應用程式與其他應用程式連線。此方法適用於小型或簡單的應用程式。當應用程式越大,而您想要與多個後端服務連線時,您可以不小心引進效能和安全問題。
在外部後端服務與使用者介面之間開始建置 façade API 層,以盡可能減少後端服務的呼叫次數,這是最佳做法。例如,您的行動應用程式可以對處理其他 REST 服務呼叫的 façade API 層執行單一呼叫,並將所有內送資料以單一回應行動應用程式合併。
建立完整的自訂 API
使用 Oracle Mobile Hub 建立完整的自訂 API。
按一下 並選取開發,然後從側邊功能表中選取 API 。如果已建立 API (不論是「草稿」或「已發布」狀態),您將會看到 API 清單。如果沒有自訂 API,您將會見到包含新 API 按鈕的頁面。按一下您已建立的 API,或按一下新建 API 開始使用。
定義端點
您可以建立資源來定義 API 的端點。資源是 API 的關鍵。它具有類型、某些與其關聯的資料、與其他資源的關係,並且包含一或多個對其採取動作的方法。資源幾乎可以是任何項目:影像、文字檔、其他資源的集合、邏輯交易、程序等。
當您為資源建立方法時,「方法 (Methods)」連結下方會顯示該方法的符號。如果您需要檢查資源定義,可以立即查看為資源定義的方法。按一下圖示即可直接移至該方法定義。
您可以切換至精簡模式 (位於新資源的右側),清除雜亂以更快速地找到資源。精簡顯示器會隱藏資源描述、資源類型和路徑。
新增方法至資源
方法是可以在資源上執行的動作。「方法 (Methods)」頁面一次顯示一個方法。定義至少兩個方法之後,您可以按一下頁面頂端方法的圖示來查看其詳細資訊。
定義資源的方法之後,您可以定義這些方法的要求和回應。
定義方法的要求
現在您已選取方法,請定義您要連線之服務的要求。例如,如果您選取 POST
方法,現在就可以定義要建立的內容。您可以新增參數和要求主體,其中包含要傳送給服務的資料描述。
- 按一下要求以定義要求。
- 按一下新增參數,然後選取參數類型:查詢或標頭。如果方法需要參數,請選取必要。
- 視您選取的方法而定,按一下新增媒體類型並定義方法主體。主體包含您要傳送至伺服器的資料。例如,如果您要定義
POST
方法,則必須定義要建立的項目,例如新的客戶清單或服務要求。如果您正在定義GET
方法,就不需要傳送方法主體,因此您不需要指定媒體類型。 - 按一下新增媒體類型以新增其他媒體類型。如果您決定不想要該方法,請按一下標幟中的 X 來刪除該方法。
定義方式的回應
視要求而定,您不一定需要回應。回應描述從服務傳回結果的程序。您可能會想要定義一個回應,以驗證您要求的資料是否已傳回,或者您可能會想要回應以確認是否已收到要求。定義回應與定義要求類似。主要差異在於您必須選取狀態代碼,才能讓您知道連線的結果。
audits
資源之 POST
方法的回應,狀態代碼為 201,表示已順利建立新資源。此範例也顯示傳回回應格式 application/json
、新增的 Location
標頭,以及包含模擬資料的訊息主體:responses:
201:
description: |
The request has been fulfilled and resulted in a new resource
being created. The newly created resource can be referenced
by the URI(s)returned in the entity of the response, with the
most specific URI for the resource given by a Location header
field.
headers:
Location:
displayName: Location
description: |
Identifies the location of the newly created resource.
type: string
example: |
/20934
required: true
body:
application/json:
example: |
{
"id": 20934,
"title": "Lynn's Leaking Water Heater",
"contact": {
"name": "Lynn Adams",
"street": "45 O'Connor Street",
"city": "Ottawa",
"postalcode": "a1a1a1",
"username": "johnbeta"
},
"status": "New",
"driveTime": 30,
"priority": "high",
"notes": "My notes",
"createdon": "2014-01-20 23:15:03 EDT",
"imageLink": "storage/collections/2e029813-d1a9-4957-a69a-fbd0d74331d77/objects/6cdaa3a8-097e-49f7--9bd2-88966c45668f?user=lynn1014"
}
定義回應時,您可以決定測試端點,或按一下導覽列中的端點返回主要「資源」頁面。您可以從該處繼續前往「API 設計工具」中的另一個頁面,建立根目錄、資源類型或特性,或新增 API 文件。
如果您決定不想要該方法,請按一下標幟中的 X 來刪除它。
建立 REST 連線器 API
您可以使用 REST 連線器 API 精靈來建立、設定及測試您的連線器 API。
若要取得基本工作連線器 API,您可以提供連線器 API 的名稱和外部服務的 URL。
您可以從此處:
-
定義規則以針對您要存取的資料形成特定要求或回應。
-
為您存取的服務設定用戶端安全性策略。
-
測試連線並測試對連線進行呼叫的結果。
您必須建立自訂 API 和實行,讓您的應用程式能夠呼叫連線器 API,並自動產生 API 和實行。如果您想要手動執行此操作,則必須使用適當的資源建立自訂 API,然後實作自訂程式碼。
建立基本連線器
您可以在 REST 連線器 API 精靈中完成前兩個頁面來建立功能連線器。
-
按一下
並選取開發,然後從側邊功能表中選取 API 。
-
按一下 REST (如果這是第一個要建立的連線器 API) 或新建連線器,然後從下拉式清單中選取 REST 。
-
提供下列資訊來識別新的 REST 連線器 API:
-
API 顯示名稱:連線器 API 清單中顯示的名稱。
-
API 名稱:連線器 API 的唯一名稱。
依照預設,此名稱會附加至相對基礎 URI,作為連線器 API 的資源名稱。您可以在 API 名稱欄位下方看到基礎 URI。
除了此連線器 API 的新版本之外,其他連線器 API 都不能有相同的資源名稱。
-
簡短描述:選取此 API 時,此描述會顯示在「連線器」頁面上。
-
-
按一下建立。
-
在「REST 連線器 API」對話方塊的「一般」頁面中,設定逾時值:
-
HTTP 讀取逾時:等待讀取資料的最長時間 (毫秒)。如果您未提供值,則會套用預設值 20 秒。
-
HTTP 連線逾時:連線遠端 URL 所使用的時間 (毫秒)。值為 0 毫米表示允許無限逾時。
HTTP 逾時值必須小於
Network_HttpRequestTimeout
原則,預設值為 40,000 毫秒。附註:
除了服務開發人員角色之外,如果您還有行動雲端管理員角色,可以從「管理員」檢視開啟policies.properties
檔案,查看目前環境的網路原則值。否則,請向您的行動雲端管理員詢問相關值。
-
-
按一下描述區,然後輸入服務的連線資訊。
如果您提供 Swagger 描述區 URL,系統會識別並顯示可用的資源,您可以選取要使用的資源。
附註:
只支援標準網際網路存取連接埠 80 和 443。無法使用自訂連接埠連線服務。 -
按一下儲存。
-
(選用) 按一下測試,選取認證證明資料,然後對服務進行測試呼叫。
您可以透過下列方式進一步設定連線器:
-
(如果您已在「描述區」頁面提供描述區,請移至資源頁面,然後選取公開之資源的方法。
-
定義規則。
-
設定安全原則。
若要確定您的連線器 API 組態有效,您應該先完整測試 (不只是從「連線器 API 測試」頁面),然後再進行發布。也就是說,您應該測試使用此連線器 API 的自訂 API (及其實行)。基本上,如果您準備好發布連線器 API,您也應該準備好發布呼叫它的自訂 API。
設定規則
您可以設定規則來定義行動 App 與服務之間的互動。規則可讓您為服務上的資源呼叫、對特定代理主機路徑的呼叫,以及對特定類型作業 (動詞) 的呼叫新增預設參數值。這有助於強制實行 URL 字串的一致語法,讓自訂程式碼開發人員不必插入這些值,並可透過分析追蹤不同的呼叫。
您可以建立一或多個規則。每個規則可以有一或多個類型為 Query
和 Header
的參數。
如果未套用任何規則,所有呼叫都會透過代理主機傳送至現有服務。
您剛才定義的規則描述會顯示在規則標幟的預設參數段落上方。例如,假設已提供下列值:
-
遠端 URL =
https://maps.googleapis.com/maps/api/directions
/json?origin=los+angeles&destination=seattle
-
本機 URI =
myMapAPI
-
具有下列參數的規則:
Query:key:A3FAEAJ903022
-
GET
和PUT
HTTP 方法
規則描述如下所示:
若 GET
至 https://maps.googleapis.com/maps/api/directions/json?origin=los+angeles&destination=seattle
可從 myMapAPI/directions
取得,請包含 Query:key=A3FAEAJ903022
。
如果未建立任何規則,將會讀取描述:
對於可從 myMapAPI
取得的 https://maps.googleapis.com/maps/api/directions
所有方法,將不會套用預設參數。
您現在有對應至現有服務的基礎 URI。使用我們的範例:
mobile/connector/myMapAPI/directions/json?origin=los+angeles&destination=seattle
對應至 https://maps.googleapis.com/maps/api/directions/json?origin=los+angeles&destination=seattle