ファサードRESTサービスのカスタムAPIの実装
モバイル・アプリケーションを開発する場合は、通常、最初にユーザー・インタフェース・レイヤーから開始し、次にREST Webサービスを使用してアプリケーションを別のアプリケーションに接続します。この方法は、小規模または単純なアプリケーションに適しています。アプリケーションが大きく、複数のバックエンド・サービスに接続する場合、パフォーマンスとセキュリティの問題を誤って発生させる可能性があります。
ベスト・プラクティスは、外部バックエンド・サービスとユーザー・インタフェースの間のファサードAPIレイヤーの構築を開始して、可能なかぎりバックエンド・サービスへのコール数を減らすことです。たとえば、モバイル・アプリケーションは、他のRESTサービスへのコールを処理するファサードAPIレイヤーへの単一のコールを実行し、すべての受信データをモバイル・アプリケーションへの単一のレスポンスに統合できます。
完全なカスタムAPIの作成
Oracle Mobile Hubを使用して完全なカスタムAPIを作成するには。
をクリックし、サイド・メニューから「開発」、「API」の順に選択します。APIがすでに作成されている場合(ドラフト状態でも公開済状態でも)、APIのリストが表示されます。カスタムAPIがない場合は、ページに「New API」ボタンが表示されています。すでに作成したAPIをクリックするか、「New API」をクリックして作業を開始します。
エンドポイントの定義
リソースを作成してAPIのエンドポイントを定義します。リソースはAPIの最重要ポイントです。リソースにはタイプがあり、なんらかのデータが関連付けられており、他のリソースとの関係があり、リソースに対して実行される1つ以上のメソッドが含まれます。イメージ、テキスト・ファイル、他のリソースのコレクション、論理トランザクション、プロシージャなど、ほぼ何でもリソースになります。
リソースのメソッドを作成すると、そのメソッドの記号が「Methods」リンクの下に表示されます。リソース定義を確認する必要がある場合は、どのメソッドがリソースに定義されているかをすぐに確認できます。アイコンをクリックして、そのメソッド定義に直接移動します。
「コンパクト・モード」(「新規リソース」の右にある)に切り替えることで、クラッターをクリアしてリソースをより迅速に見つけることができます。コンパクト表示にすると、リソースの説明、リソース・タイプおよびパスが非表示になります。
メソッドをリソースに追加
メソッドは、リソースで実行できるアクションです。「Method」ページには、一度に1つのメソッドのみ表示されます。2つ以上のメソッドを定義したら、ページの上部でメソッドのアイコンをクリックして詳細を表示できます。
リソースのメソッドを定義したら、それらのメソッドのリクエストとレスポンスを定義できます。
メソッドのリクエストの定義
メソッドを選択したので、接続するサービスに対するリクエストを定義します。たとえば、POST
メソッドを選択した場合、次に何を作成するかを定義できます。それには、パラメータおよびサービスに送信するデータの説明を含むリクエスト本文を追加します。
- 「Request」をクリックしてリクエストを定義します。
- 「パラメータの追加」をクリックしてパラメータ・タイプ(「問合せ」または「ヘッダー」)を選択します。メソッドにとってそのパラメータが必須の場合は、「Required」を選択します。
- 選択したメソッドによっては、「Add Media Type」をクリックしてメソッド本文を定義します。本文には、サーバーに送信するデータが含まれます。たとえば、
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 Designerの別のページに進んで、ルート、リソース・タイプまたは特質を作成したり、APIドキュメントを追加できます。
メソッドが必要ない場合は、バナーでXをクリックして削除します。
RESTコネクタAPIの作成
RESTコネクタAPIウィザードを使用して、コネクタAPIを作成、構成およびテストします。
基本的な機能を持つコネクタAPIを取得するには、コネクタAPIの名前および外部サービスのURLを指定するだけです。
次のことを実行できます:
-
アクセスするデータの特定のリクエストまたはレスポンスを形成するルールを定義します。
-
アクセスしているサービスのクライアント側のセキュリティ・ポリシーを構成します。
-
接続をテストし、接続に対して行われたコールの結果をテストします。
アプリケーションでコネクタAPIをコールし、APIおよび実装を自動的に生成できるようにするには、カスタムAPIおよび実装を作成する必要があります。手動で実行する場合は、適切なリソースを使用してカスタムAPIを作成してから、カスタム・コードを実装する必要があります。
基本コネクタの設定
REST Connector APIウィザードの最初の2ページを完了することで、機能するコネクタを作成できます。
-
をクリックし、サイド・メニューから「開発」、「API」の順に選択します。
-
「REST」(作成する最初のコネクタAPIの場合)または「New Connector」をクリックして、ドロップダウン・リストから「REST」を選択します。
-
次を指定して、新しいRESTコネクタAPIを特定します。
-
API表示名:コネクタAPIのリストに表示される名前。
-
API名:コネクタAPIの名前。
デフォルトでは、この名前がコネクタAPIのリソース名として相対ベースURIに追加されます。ベースURIは API Nameフィールドの下に表示されます。
このコネクタAPIの新しいバージョン以外、他のコネクタAPIで同じリソース名を持つことはできません。
-
短い説明:このAPIを選択したときに、この説明がコネクタ・ページに表示されます。
-
-
「Create」をクリックします。
-
RESTコネクタAPIダイアログ・ボックスの「一般」ページで、タイムアウト値を設定します:
-
HTTP Read Timeout:データ読取り待機に費やすことができる最大時間(ミリ秒)。値を入力しない場合、デフォルト値の20秒が使用されます。
-
HTTP Connection Timeout:リモートURLへの接続に要した時間(ミリ秒)。0mmsは、無制限のタイムアウトが許容されることを意味します。
HTTPタイムアウト値は、
Network_HttpRequestTimeout
ポリシー(デフォルト値は40,000ミリ秒)未満である必要があります。ノート:
サービス開発者ロールに加えてモバイル・クラウド管理者ロールを持つ場合、「Administrator」ビューでpolicies.properties
ファイルを開き、現在の環境のネットワーク・ポリシーの値を確認できます。そうでない場合は、モバイル・クラウド管理者に値を尋ねてください。
-
-
「ディスクリプタ」をクリックして、サービスの接続情報を入力します。
SwaggerディスクリプタURLを指定すると、使用可能なリソースが識別されて表示され、必要なリソースを選択できます。
ノート:
サポートされているのは、標準のインターネット・アクセス・ポート80および443のみです。カスタム・ポートを使用してサービスに接続することはできません。 -
「保存」をクリックします。
-
(オプション)「テスト」をクリックして認証資格証明を選択し、テスト・コールをサービスに行います。
そこから、次の方法でコネクタをさらに構成できます:
-
(ディスクリプタ・ページでディスクリプタを指定した場合)「リソース」ページに移動し、公開されたリソースのメソッドを選択します。
-
ルールの定義
-
セキュリティ・ポリシーの設定
コネクタAPIが有効であることを確認するために、公開前に徹底的にテストする必要があります(Connector API Testページからだけでなく)。すなわち、このコネクタ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
で使用可能な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つは、保守するポリシーの数を制限するためです: 多彩な構成でポリシーを作成するのではなく、同じ汎用ポリシーを使用し、要件に合せて特定の値をオーバーライドできます。
セキュリティ・ポリシーを選択して、ポリシーのオーバーライドを設定するには: