フェードRESTサービス用のカスタムAPIの実装
モバイル・アプリケーションを開発する場合、通常はユーザー・インタフェース・レイヤーから始めてから、REST Webサービスを使用してアプリケーションに接続します。この方法は、小規模または単純なアプリケーションに有効です。アプリケーションを大きくして複数のバックエンド・サービスと接続する場合、パフォーマンスおよびセキュリティの問題を誤って引き起こすことがあります。
可能な場合には、外部バックエンド・サービスとユーザー・インタフェースの間にファサードのAPIレイヤーの構築を開始して、バックエンド・サービスへのコール数をできるかぎり減らすことをお薦めします。たとえば、モバイル・アプリケーションで、他のRESTサービスへのコールを処理し、モバイル・アプリケーションへの1つのレスポンス内のすべての受信データを統合するfa ade APIレイヤーへの単一のコールを実行できます。
完全なカスタムAPIの作成
Oracle Mobile Hubを使用して完全なカスタムAPIを作成する手順:
をクリックし、サイド・メニューから「開発」、「api」の順に選択します。APIがすでに作成されている場合(ドラフト状態か公開済状態かに関係なく)、APIのリストが表示されます。カスタムAPIが存在しない場合、「新規API」ボタンのあるページが表示されます。すでに作成したAPIをクリックするか、「新規API」をクリックして開始します。
エンドポイントの定義
APIのエンドポイントを定義するリソースを作成します。リソースはAPIのクラックスです。これには、タイプ、データに関連付けられているもの、他のリソースとの関係、およびそれを処理する1つ以上のメソッドが含まれています。リソースは、ほぼすべて(イメージ、テキスト・ファイル、他のリソースの集合、論理トランザクション、プロシージャなど)です。
リソースのメソッドを作成すると、そのメソッドの記号が「メソッド」リンクの下に表示されます。リソース定義を調べる必要がある場合は、リソースに定義されているメソッドをすぐに確認できます。アイコンをクリックすると、そのメソッド定義に直接移動します。
「圧縮モード」(新規リソースの右側)に切り替えると、リソースを簡単に見つけられます。コンパクト表示では、リソースの説明、リソース・タイプおよびパスは非表示になります。
リソースへのメソッドの追加
メソッドは、リソースに対して実行できるアクションです。メソッド・ページには、一度に1つのメソッドが表示されます。少なくとも2つのメソッドを定義した後、ページ上部にあるメソッドのアイコンをクリックすると、その詳細を表示できます。
リソースのメソッドを定義した後、それらのメソッドに対するリクエストとレスポンスを定義できます。
メソッドのリクエストの定義
これで、メソッドを選択したので、接続するサービスに対して行うリクエストを定義します。たとえば、POST
メソッドを選択した場合、ここで作成する対象を定義できます。これは、サービスに送信するデータの説明が含まれているパラメータおよびリクエスト本文を追加して行います。
- リクエストを定義するには、「リクエスト」をクリックします。
- 「パラメータの追加」をクリックし、パラメータ・タイプ(「問合せ」または「ヘッダー」)を選択します。パラメータがメソッドに必要な場合は、「必須」を選択します。
- 選択した方法に応じて、「メディア・タイプの追加」をクリックし、メソッド本体を定義します。本体には、サーバーに送信するデータが含まれています。たとえば、
POST
メソッドを定義する場合は、新規顧客リストやサービス要求など、作成する品目を定義する必要があります。GET
メソッドを定義する場合は、メソッド本体を送信する必要がないため、メディア・タイプを指定する必要はありません。 - メディア・タイプを追加するには、「メディア・タイプの追加」をクリックします。メソッドが不要になった場合は、バナーのXをクリックして削除します。
メソッドに対するレスポンスの定義
要求によっては、応答が必要な場合と不要な場合があります。レスポンスは、サービスから結果を返すプロセスを説明します。リクエストしたデータが返されたことを検証するレスポンスを定義する場合や、リクエストを受信したかどうかを確認するレスポンスが必要な場合があります。レスポンスの定義は、リクエストの定義に似ています。主な違いは、接続の結果を示すステータス・コードを選択する必要があることです。
audits
リソースのPOST
メソッドに対するレスポンスが作成されたことを示しています。この例では、戻りレスポンス形式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の作成
コネクタAPIを作成、構成およびテストするには、RESTコネクタAPIウィザードを使用します。
基本的な作業用コネクタAPIを取得するには、単にコネクタAPIの名前、および外部サービスへのURLを指定します。
ここから、次の操作を実行できます。
-
アクセスするデータに対する特定のリクエストまたはレスポンスを形成するルールを定義します。
-
アクセスしているサービスのクライアント側セキュリティ・ポリシーを構成します。
-
接続をテストし、接続に対して行われたコールの結果をテストします。
アプリケーションからコネクタAPIをコールできるようにするには、カスタムAPIおよび実装を作成して、APIおよび実装を自動的に生成する必要があります。この作業を手動で行う場合は、適切なリソースを含むカスタムAPIを作成してから、カスタム・コードを実装する必要があります。
基本コネクタの設定
RESTコネクタAPIウィザードの最初の2ページを完了することで、機能しているコネクタを作成できます。
-
をクリックし、サイド・メニューから「開発」、「api」の順に選択します。
-
REST (作成する最初のコネクタAPIの場合)または「新規コネクタ」をクリックし、ドロップダウン・リストから「REST」を選択します。
-
次の情報を指定して、新しいRESTコネクタAPIを識別します。
-
API表示名:コネクタAPIのリストに表示される名前。
-
API名:コネクタAPIの一意の名前。
デフォルトでは、この名前がコネクタAPIのリソース名として相対ベースURIに追加されます。「API名」フィールドの下にベースURIが表示されます。
このコネクタAPIの新規バージョンではなく、同じリソース名を他のコネクタAPIに含めることはできません。
-
簡単な説明:この説明は、このAPIを選択したときにConnectorsページに表示されます。
-
-
「作成」をクリックします。
-
「RESTコネクタAPI」ダイアログ・ボックスの「一般」ページで、タイムアウト値を設定します。
-
HTTP読取りタイムアウト:データ読取りの待機に要する最大時間(ミリ秒)。値を指定しない場合は、デフォルト値の20秒が適用されます。
-
HTTP接続タイムアウト:リモートURLへの接続に要した時間(ミリ秒)。0mmsの値は、タイムアウトが無限であることを意味します。
HTTPタイムアウトの値は、デフォルト値が40,000ミリ秒である
Network_HttpRequestTimeout
ポリシーの値よりも小さくする必要があります。注意:
サービス開発者ロールに加えてモバイル・クラウド管理者ロールも持っている場合は、policies.properties
ファイルを開いて、現在の環境のネットワーク・ポリシーの値を管理者ビューから確認できます。それ以外の場合は、モバイル・クラウド管理者に値を依頼します。
-
-
「ディスクリプタ」をクリックし、サービスの接続情報を入力します。
SwaggerディスクリプタのURLを指定すると、使用可能なリソースが識別および表示され、対象のリソースを選択できます。
注意:
標準のインターネット・アクセス・ポート80および443のみがサポートされます。サービスへの接続は、カスタム・ポートを使用して行うことができません。 -
「保存」をクリックします。
-
(オプション)「テスト」をクリックし、認証資格証明を選択して、サービスへのテスト・コールを行います。
ここから、コネクタをさらに次の方法で構成できます。
-
(「ディスクリプタ」ページでディスクリプタを指定した場合)「リソース」ページに移動して、公開されたリソースのメソッドを選択します。
-
ルールを定義します。
-
セキュリティ・ポリシーを設定します。
コネクタAPI構成が有効であることを確認するには、発行前に、(コネクタAPIの「テスト」ページからではなく)完全にテストする必要があります。つまり、このコネクタAPIを使用するカスタムAPIも(実装で)テストする必要があります。基本的に、コネクタAPIを公開する準備が整った場合は、これを呼び出すカスタムAPIを公開する準備も必要です。
ルールの設定
ルールを設定して、モバイル・アプリとサービス間の相互作用を定義します。ルールを使用すると、サービス上のリソースへのすべての呼出し、特定のプロキシ・パスへの呼出し、および特定タイプの操作(動詞)に対するコールのデフォルトのパラメータ値を追加できます。これは、URL文字列構文の一貫性を確保し、カスタム・コード開発者がこれらの値を挿入しなくても済むようにし、分析を通じて様々な呼出しを追跡するのに役立ちます。
1つ以上のルールを作成できます。各ルールには、Query
およびHeader
タイプの1つ以上のパラメータを指定できます。
ルールが適用されていない場合は、すべてのコールがプロキシを介して既存のサービスに渡されます。
定義したルールの説明が、「デフォルト・パラメータ」セクションのすぐ上のルール・バナーに表示されます。たとえば、次の値が指定されたとします。
-
リモートURL =
https://maps.googleapis.com/maps/api/directions
/json?origin=los+angeles&destination=seattle
-
ローカルURI =
myMapAPI
-
次のパラメータを使用するルール:
Query:key:A3FAEAJ903022
-
GET
およびPUT
HTTPメソッド
ルールの説明は、次のようになります。
myMapAPI/directions
にあるGET
からhttps://maps.googleapis.com/maps/api/directions/json?origin=los+angeles&destination=seattle
には、Query:key=A3FAEAJ903022
を含める。
ルールが作成されない場合、説明は次のようになります。
myMapAPI
で使用可能なすべてのmethodを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
にマップされます。
セキュリティ・ポリシーの構成およびプロパティのオーバーライド
すべてのセキュリティ・ポリシーには、オーバーライドと呼ばれるプロパティがあり、ユーザーが構成できます。ポリシー構成プロパティをオーバーライドする理由の1つは、保持するポリシーの数を制限することです。少数の構成で複数のポリシーを作成するのではなく、同じ汎用ポリシーを使用し、要件を満たすように特定の値をオーバーライドすることができます。
セキュリティ・ポリシーを選択してポリシー・オーバーライドを設定する手順は、次のとおりです。