實行 FaG4ade REST 服務的自訂 API
當您開發行動應用程式時,通常會先以使用者介面層啟動,然後使用 REST Web 服務,以另一個應用程式連線您的應用程式。這種方法適用於小型或簡單的應用程式。當應用程式較大,而您想要與多個後端服務連線時,可能會意外導入效能與安全問題。
最佳作法是在外部後端服務和使用者介面之間開始建置 faG4ade API 層,以減少每次可能的後端服務呼叫數目。例如,您的行動應用程式可以針對處理其他 REST 服務呼叫的 famwade API 層執行單一呼叫,然後以單一回應將所有內送資料合併至您的行動應用程式。
建立完整的自訂 API
使用 Oracle Mobile Hub 建立完整的自訂 API。
按一下 並選取開發,然後從側邊功能表中選取 api。若已建立 API (不論是處於「草稿」或「已發布」狀態),您將會見到 API 清單。如果沒有自訂 API,您將會見到含有新 API 按鈕的頁面。按一下您已經建立的 API,或按一下新 API 開始使用。
定義端點
您可以建立資源來定義 API 的端點。資源是 API 的路徑。它有一個類型、一些與其關聯的資料、與其他資源的關係,以及包含一或多個對其採取動作的方法。資源幾乎可以是:影像、文字檔、其他資源的集合、邏輯交易、程序等。
為資源建立方法後,該方法的符號會顯示在方法連結下方。如果您需要檢查資源定義,您可以立即看到為資源定義的方法。按一下圖示可直接前往該方法定義。
只要切換至「壓縮模式」(會到「新資源」的右邊),即可清除讓資源更快速地找到資源。精簡顯示會隱藏資源描述、資源類型以及路徑。
新增方法至資源
方法是可在資源上執行的動作。「方法」頁面會一次顯示一個方法。至少定義了兩種方法之後,您可以按一下頁面頂端方法的圖示,查看其詳細資訊。
定義資源的方法後,您可以為這些方法定義要求和回應。
定義方法的要求
選取方法之後,請定義您要連線的服務要求。例如,如果您選取 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 所花費的時間 (毫秒)。0mms 值表示允許無逾時。
HTTP 逾時值必須小於
Network_HttpRequestTimeout
原則,預設值為 40,000 毫秒。注意事項:
如果除了服務開發人員角色之外,您還具有行動雲端管理員角色,您可以從「管理員」檢視,開啟policies.properties
檔案,查看目前環境的網路原則值。否則,請洽詢您的行動雲端管理員瞭解值。
-
-
按一下描述區,然後輸入服務的連線資訊。
如果您提供 Swagger 描述區 URL,就會識別並顯示可用的資源,您可以選取需要的資源。
注意事項:
僅支援標準網際網路存取連接埠 80 和 443。無法使用自訂連接埠建立服務的連線。 -
按一下儲存。
-
(選擇性) 按一下測試、選取認證證明資料,然後對服務進行測試呼叫。
您可以使用下列方式進一步設定連線器:
-
(如果您已經在「描述區」頁面中提供描述區) 移至「資源」頁面,然後選取顯示之資源的方法。
-
定義規則。
-
設定安全原則。
若要確定連線器 API 組態有效,您應在發布前先從「連線器 API 測試」頁面進行完整測試 (不只是從「連線器 API 測試」頁面)。亦即,您也應該測試使用此連線器 API 的自訂 API (與其實行)。基本上,如果您已準備好發佈連線器 API,您也應該準備好發佈呼叫連線器 API 的自訂 API。
設定規則
您可以設定規則來定義行動應用程式與服務之間的互動。規則提供您新增服務上資源之所有呼叫的預設參數值、呼叫特定代理主機路徑,以及特定作業類型 (動詞) 的呼叫方式。這有助於強制 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
至httpsTypeI/maps.googleapis.com/maps/api/directions/json?from
in=los+angeles&destination=Seattle (位於myMapAPI/
directions) ,包括查詢: 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