Faier REST ServiceのカスタムAPIの実装
モバイル・アプリケーションを開発する場合、通常はユーザー・インタフェース・レイヤーから最初に開始し、次にREST Webサービスを使用して、アプリケーションを別のアプリケーションに接続します。この方法は、小規模アプリケーションや単純アプリケーションに有効です。アプリケーションが大きいときに複数のバックエンド・サービスに接続する場合は、パフォーマンスおよびセキュリティの問題を不注意に取り入れることができます。
外部バックエンド・サービスとユーザー・インタフェースの間にfaier APIレイヤーを構築すると、可能な場合は常にバックエンド・サービスへのコール数を減らすことがベスト・プラクティスです。たとえば、モバイル・アプリケーションでは、他のRESTサービスへのコールを処理するファクタドAPIレイヤーへの1回のコールを実行し、すべての着信データを1回のレスポンスでモバイル・アプリケーションに統合できます。
完全なカスタムAPIの作成
Oracle Mobile Hubを使用して完全なカスタムAPIを作成する手順:
をクリックし、サイド・メニューから「開発」、「api」の順に選択します。APIがすでに作成されている場合(ドラフト状態か公開済状態かに関係なく)、APIのリストが表示されます。カスタムAPIが存在しない場合、「新規API」ボタンのあるページが表示されます。すでに作成したAPIをクリックするか、「新規API」をクリックして開始します。
エンドポイントの定義
リソースを作成してAPIのエンドポイントを定義します。リソースとは、APIの重要性のことです。データ型、データが関連付けられているデータ、他のリソースとの関係、そのデータに対して実行される1つ以上のメソッドが含まれていること。リソースには、イメージ、テキスト・ファイル、他のリソースの集合、論理トランザクション、手順など、ほぼすべてがあります。
リソースのメソッドを作成すると、そのメソッドのシンボルが「メソッド」リンクの下に表示されます。リソース定義の調査が必要な場合は、リソースに定義されているメソッドをすぐに確認できます。アイコンをクリックすると、そのメソッド定義に直接移動します。
「Compact Mode」(「New Resource」の右にある)に切り替えることで、すっきりさせてリソースをより迅速に見つけることができます。コンパクト表示では、リソースの説明、リソース・タイプおよびパスが非表示になります。
リソースへのメソッドの追加
メソッドは、リソースに対して実行できるアクションです。「メソッド」ページには、一度に1つのメソッドが表示されます。2つ以上の方法を定義した後、ページの上部にあるメソッドのアイコンをクリックしてその詳細を表示できます。
リソースのメソッドを定義したら、それらのメソッドのリクエストとレスポンスを定義できます。
メソッドのリクエストの定義
メソッドを選択したら、接続するサービスに対するリクエストを定義します。たとえば、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の作成
コネクタ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に追加されます。ベースURIは「API名」フィールドの下に表示されます。
このコネクタAPIの新規バージョン以外では、他のコネクタAPIに同じリソース名を付けることはできません。
-
簡単な説明:このAPIが選択されている場合、この説明がConnectorsページに表示されます。
-
-
「作成」をクリックします。
-
「RESTコネクタAPI」ダイアログ・ボックスの「一般」ページで、タイムアウト値を設定します。
-
HTTP読取りタイムアウト:データ読取りの待機に要した最大時間(ミリ秒)。値を入力しない場合は、デフォルト値の20秒が適用されます。
-
HTTP接続タイムアウト:リモートURLへの接続に要した時間(ミリ秒)。0 mmsの値は、タイムアウトが無限であることを意味します。
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つは、維持するポリシー数の制限です。構成がほとんど変わらない複数のポリシーを作成するのではなく、同じ一般ポリシーを使用し、要件に一致するように特定の値をオーバーライドできます。
セキュリティ・ポリシーを選択し、ポリシー・オーバーライドを設定するには、次のようにします。