實行 Faade REST 服務的自訂 API
開發行動應用程式時,通常是先以使用者介面層開始,然後再使用 REST Web 服務,將您的應用程式與其他應用程式連線。此方法適用於小型或簡單的應用程式。當應用程式較大,而您想要連線多個後端服務時,可能會不小心導致效能與安全問題。
最佳作法是在外部後端服務與使用者介面之間開始建立 faade API 層,以減少對後端服務的呼叫數目。例如,您的行動應用程式可以對處理對其他 REST 服務之呼叫的 faJNDI 層執行單一呼叫,並將單一回應中的所有內送資料合併至您的行動應用程式。
建立完整的自訂 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 Connector API 精靈中完成前兩個頁面,來建立運作連線器。
-
按一下
並選取開發,然後從側邊功能表中選取 api。
-
按一下 REST (如果是要建立的第一個連線器 API) 或新建連線器,然後從下拉式清單中選取 REST。
-
提供下列資訊以識別您的新 REST 連線器 API:
-
API 顯示名稱:連線器 API 清單中顯示的名稱。
-
API 名稱:連線器 API 的唯一名稱。
依照預設,此名稱會附加至相對基本 URI,作為連線器 API 的資源名稱。您會在 API 名稱欄位下方看到基礎 URI。
除了此連線器 API 的新版本外,其他連線器 API 不能有相同的資源名稱。
-
簡要說明:選取此 API 時,連線器頁面會顯示此說明。
-
-
按一下建立。
-
在 REST Connector API 對話方塊的「一般」頁面中,設定逾時值:
-
HTTP 讀取逾時:等待讀取資料的時間上限 (毫秒)。如果您未提供值,將會套用預設值 20 秒。
-
HTTP 連線逾時:連線遠端 URL 所花的時間 (毫秒)。值為 0mms 表示允許無限的逾時。
HTTP 逾時值必須小於
Network_HttpRequestTimeout原則,預設值為 40,000 毫秒。注意:
如果除了服務開發人員角色之外,您還有行動雲端管理員角色,您可以從「管理員」檢視開啟policies.properties檔案,查看目前環境之網路原則的值。否則,請洽詢您的行動雲端管理員取得值。
-
-
按一下描述區,然後輸入服務的連線資訊。
如果您提供 Swagger 描述區 URL,就會識別並顯示可用的資源,您可以選取想要的資源。
注意:
僅支援標準的網際網路存取連接埠 80 和 443。無法使用自訂連接埠建立服務連線。 -
按一下儲存。
-
(選擇性) 按一下測試,選取認證證明資料,然後對服務進行測試呼叫。
您可以透過下列方式,進一步設定連線器:
-
(如果您已在「描述區」頁面提供描述區),移至「資源」頁面,然後選取公開之資源的方法。
-
定義規則。
-
設定安全原則。
若要確定連線器 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和PUTHTTP 方法
規則說明將如下:
若要從myMapAPI/Assignment取 httpsindirect //maps.googleapis.com/maps/api/directions/json?originXllos+angelesestinationyRseattle 得,請在myMapAPI/instructions取得,包括查詢:索引鍵= 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