Oracle Enterprise Pack for Eclipse Oracle Mobile Application Framework (OEPE Edition)でのモバイル・アプリケーションの開発 リリース2.2.1 E72511-01 |
|
前 |
次 |
この章では、コードの生成に使用可能なREST APIおよびデータ型の作成、RESTサービスのアクセス、使用およびテスト、Oracle Mobile Cloud Serviceを使用したモバイル・アプリケーションの開発を可能にする、RESTサービス・エディタについて説明します。
この章の内容は次のとおりです。
RESTサービス・エディタにより、REST APIとデータ型を作成し、そこからアプリケーションで使用するコードを生成できます。これにより、REST APIと相互作用するアプリケーションを開発したり、開発中のREST APIがどのように動作するかをテストできます。RESTサービスとともに使用するアプリケーションの開発中に、そのアプリケーションによるRESTリクエストの処理方法を確認するためにエディタを使用できます。
次のことが可能です。
ライブRESTサービスに接続してリクエストを送信し、サーバーから戻されるレスポンスを調査できます。
REST APIおよびデータ型を、すべて最初から作成するか、インポートしたライブ・サービスのREST APIおよびデータ型に基づいて独自のREST APIをモデル化することで作成できます。
エディタは、RESTサービス記述(Webサービスの説明を格納したXMIファイル)とともに動作します。
エディタには、次の3つのページがあり、エディタの左下にあるタブを使用してそれぞれ移動できます。
RESTクライアント
REST API
データ型
RESTサービス・エディタには、元に戻す/やり直しサポートがあります。各ページは連携して動作しますが、RESTクライアントのみライブRESTサービスと相互作用します。他の2つのページでは、REST APIとそのデータ型をモデル化できます。エディタを保存すると、REST APIページと「データ型」ページのみが保存されます。
図16-1のRESTクライアント・ページでは、REST APIを公開している既存のアプリケーションを試すことができます。たとえば、アプリケーションがREST APIと相互作用する方法を調査し、サービスにリクエストを送信してサーバーからのレスポンスを確認できます。このページは、RESTサービス記述の永続状態の一部ではないため、変更によりエディタが不適切な状態になることも、エディタの保存時にそれらが永続化されることもありません。
(インポートすつ場所を選択するRESTクライアント情報のインポート・ダイアログを開きます)を使用して、RESTクライアント情報をインポートできます。
リクエストは次の操作によって変更できます。
メソッドを選択します。「GET」、「POST」、「PUT」およびDELETEを選択できます。
URIのフラグメントを使用してサービスの一部のみをアドレス指定します。
一致するレスポンスのみが戻されるようにリクエストの一部として問合せを送信します。
ヘッダーを使用してレスポンスで戻される内容を定義します(コンテンツ・タイプの指定など)。
問合せパラメータを使用してレスポンスを構成します(verbose=false
など)。
POSTまたはPUTを使用する場合はリクエストの一部として情報を入力し、GETを使用する場合は情報を出力します。
また、RESTクライアント・ページで、RESTサービスからRESTクライアント情報をインポートできます。
REST APIページでは、図16-2に示すように、REST APIをモデル化したり、MCSバックエンドからRAML定義をインポートできます。
REST APIをモデル化しており、RESTクライアントを使用してRESTサービスに接続した場合、サーバーからRESTクライアント情報をインポートできます。REST APIはこのページに表示され、その変更をモデル化できます。
MCS APIを使用している場合、RAML定義をローカル・ファイル・システム上のファイルまたはモバイル・バックエンドのAPIからインポートして、REST APIとしてモデル化できます。
パスはパス・セグメントで構成されており、{variable-name}
の形式の変数が含まれる場合があります。図16-2では、変数{id}のパスは、アウトラインに示されているパス・セグメントで構成され、http://130.35.103.104:7101/hrrest/resources/hrappsrvc/departments/{id}
を形成します。
Javaドメインの場合、変数のデフォルト値はjava.lang.Object
です。
パス・セグメントまたは変数の上にマウスを置くと、詳細を確認できます。
をクリックして、RAMLファイルまたはMobile Cloud ServiceバックエンドからREST APIをインポートできます。詳細は、第17.2.1.4.2項「RESTサービス・エディタを使用したREST APIのインポート」を参照してください。
「アウトライン」領域には、サービスのREST API仕様が表示されます。右側の領域のコンテンツは、仕様で選択されている内容に応じて変化します。アウトラインは、図16-3のように、OEPE IDEの「アウトライン」ウィンドウに反映されます。各操作は、RESTサービス・エディタのREST APIページで実行するか、REST APIページがエディタで選択されている場合は「アウトライン」ウィンドウで実行できます。
REST APIページで、次の操作によってREST APIを変更できます。
サービスへの新しいパスを指定します。
新しいリクエストを作成し、HTTPヘッダーと問合せパラメータの使用や、入力および出力パラメータの指定によってそれらを変更します。
REST APIが完成したら、変更内容をRESTクライアント・ページにコピーして、ライブRESTサービスに対してリクエストを試行できます。
RESTサービスと連携して動作するMAFアプリケーションを開発している場合、アプリケーションで使用するREST APIに基づいてJAVAアーティファクトを生成できます。
図16-4の「データ型」ページでは、REST APIで使用されるデータ型をモデル化できます。インポートしたデータ型はこのページに表示され、その変更をモデル化できます。
RESTクライアントを使用してRESTサービスに接続した場合、サーバーからRESTクライアント情報をインポートできます。
MCS APIを使用している場合、ローカル・ファイル・システム上のモバイル・バックエンドまたはRAMLファイルに関連付けられているデータ型をインポートできます。ファイルに定義されているJSONサンプルまたはJSONスキーマをローカル・ファイル・システムからインポートすることもできます。
「アウトライン」領域には、モデル化されたREST APIで使用されるデータ型が表示されます。右側の領域のコンテンツは、仕様で選択されている内容に応じて変化します。アウトラインは、図16-5のように、OEPE IDEの「アウトライン」ウィンドウに反映されます。各操作は、RESTサービス・エディタの「データ型」ページで実行するか、「データ型」ページがエディタで選択されている場合は「アウトライン」ウィンドウで実行できます。
「データ型」ページで、次の操作によってローカル・データ型を変更できます。
新しい属性を作成します。
新しい複合データ型または単純データ型を指定します。
データ型はファイルからインポートできます。
RESTサービスと連携して動作するMAFアプリケーションを開発している場合、アプリケーションで使用するデータ型に基づいてJAVAアーティファクトを生成できます。
RESTサービス・エディタでは、認証を使用するRESTサービスへの接続がサポートされます。使用できる認証のタイプは次のとおりです。
HTTP (Basic、Digest、Universal)
OAuth2 (コード権限タイプ)
OAuth2 (リソース所有者パスワード資格証明タイプ)
RESTサービスへの接続を作成するときに、認証の詳細を設定します。詳細は、第16.2.1.8項「認証を使用する方法」を参照してください。
RESTサービス・エディタは次の場合に開かれます。
OEPEアプリケーションで既存のRESTサービス記述を開く場合。
OEPEで新しいRESTサービス記述を作成する場合。詳細は、第16.1.6項「RESTサービス記述を作成する方法」を参照してください。
RESTサービス記述を作成して、作成済またはMAF 2.1以上に移行済のMAFアプリケーション用にモデル化されたREST APIを含めることができます。記述は、適切なフォルダのビュー・プロジェクトに格納されます。
RAML定義をMCS APIからインポートしてRESTサービス記述を作成することもできます。詳細は、第17.2.1.4.1項「「Oracle Cloud」ビューからのREST APIのインポート」を参照してください。
始める前に:
Oracle MAFパースペクティブを選択します。
MAFアプリケーションを開くか作成します。
RESTサービス記述を作成する手順:
OEPEのメイン・メニューまたはMAFアプリケーションのいずれかのプロジェクトのコンテキスト・メニューから、「ファイル」→「新」→RESTサービス記述を選択します。
または:
プロジェクト・エクスプローラで、アセンブリ・プロジェクトを右クリックして、OEPEのメイン・メニューから「ファイル」→「新」→「その他」を選択します。
「新」ダイアログで、「Oracle」を展開してRESTサービス記述を選択します。「新」ダイアログで、「次へ」をクリックします。
RESTサービス記述ページで、記述を格納するアプリケーションのビュー・プロジェクトの親フォルダを選択します。たとえば、src.restというビュー・プロジェクトのフォルダを選択します。
記述に名前を指定し、「終了」をクリックします。RESTサービス記述がRESTサービス・エディタで開かれます。
図16-1のRESTクライアントでは、ライブRESTサービスに接続して連携動作できます。
RESTクライアントの一番上にある「リソース」領域で、接続に使用するメソッドとRESTサービスのURIを指定します(図16-6を参照)。ここで定義した接続は、「接続」ビューで使用可能で、接続を編集したり、モバイル・アプリケーションの他の場所で使用できます。詳細は、第16.8,項「「接続」ビューの使用」を参照してください。
RESTクライアントは、次のHTTPメソッドを使用できます。
GET: リソースの表現を取得します。
POST: 新しいリソースの作成に使用します。作成する新しいリソースの親にPOST操作を行うと、サービスで作成と新しいIDの割当てが考慮されます。
PUT: リソースの表現の更新に使用します。更新を指定する入力がリクエストの本文で送信されます。
DELETE: リソースの削除に使用します。
RESTサービスへの接続は、URIによって指定されます。通常、URIは、現在のセッションのみで使用できますが、将来のセッションで使用できる永続URIを定義できます。複数のURIを使用した場合、有効な接続が作成されたものはすべて「アドレス」ドロップダウンから使用できます。
接続は次のように複数の方法で定義できます。
「アドレス」にREST APIの有効なアドレスをそのまま入力できます。詳細は、第16.2.1.1項「単純なURIを入力する方法」を参照してください。
アドレス構成機能では、個別にセグメント、問合せ、およびアドレスのフラグメントを入力でき、自動でエンコーディングが処理されます。詳細は、第16.2.1.2項「RESTサービスのアドレスを構成する方法」および第16.2.1.4項「リクエストにフラグメントを含める方法」を参照してください。
アプリケーションで定義された接続(アプリケーションのconnections.xml
ファイルの接続)を使用できます。詳細は、第16.2.1.5項「アプリケーションの接続名を使用する方法」を参照してください。
将来のセッションで使用できる永続URIを定義できます。詳細は、次を参照してください。
RESTサービス・エディタのRESTクライアント・ページからRESTサービスに接続します。
RESTサービスへの単純なURIを入力する手順:
「アドレス」フィールドにURIを入力します。エディタへの入力を開始すると、同じセッション中の以前のエントリに基づいてURI候補が表示されます。
RESTサービス・エディタのRESTクライアント・ページからRESTサービスに接続します。ダイアログによって、URIで直接表現できない任意の文字のエンコーディングが実行されます。
アドレスを構成する手順:
をクリックしてアドレス構成ダイアログを開きます。
「セグメント」に、URIを入力します。
別の方法として、アプリケーションの接続名を使用してURIを作成できます。詳細は、第16.2.1.5項「アプリケーションの接続名を使用する方法」を参照してください。
サーバーが問合せの結果のみを戻すように問合せを使用するには、第16.2.1.3項「リクエストに問合せを含める方法」を参照してください。
宛先の特定の場所を指定するフラグメントを使用するには、第16.2.1.4項「リクエストにフラグメントを含める方法」を参照してください。
認証が必要な場合、「リソース」セクションでをクリックして認証情報ウィザードを開きます。詳細は、第16.2.1.8項「認証を使用する方法」を参照してください。
サーバーが問合せの結果のみを戻すようにURIの一部として問合せを送信できます。問合せ値を入力するか、接続の作成時に指定した変数を使用できます。
問合せを入力する手順:
をクリックしてアドレス構成ダイアログを開きます。
問合せを入力するには、「問合せ」に値を入力します。
たとえば、http://server:port/hrrest/resources/hrappsrvc/departments
へのリクエストの送信時に、特にid=10である部門の詳細を取得する場合、アドレスhttp://server:port/hrrest/resources/hrappsrvc/departments/10
を使用してこのオブジェクトのみに関するレスポンスを戻すことができます。
問合せとして変数を使用することもできます。{ }で区切られた変数を入力します({id}
など)。リクエストを送信するときに、変数の置換ダイアログが表示され、変数ごとに値を入力できます。
サーバーが宛先の特定の場所を指定するようにURIの一部としてフラグメントを使用できます。
フラグメントを使用する手順:
をクリックしてアドレス構成ダイアログを開きます。
宛先の特定の場所を指定するフラグメントを使用するには、「フラグメント」にフラグメント名を入力します。
接続URIは、RESTクライアントで使用可能な特定のタイプのURIです。接続URIの書式はconnection://
connection-name
です。
次の例では、名前がrest_conn
の接続によって、http://localhost:7101" name="rest_conn
への接続を指定します。
<Reference className="oracle.adf.model.connection.url.HttpURLConnection" name="rest_conn" xmlns=""> <Factory className="oracle.adf.model.connection.url.URLConnectionFactory"/> <RefAddresses> <XmlRefAddr addrType="rest_conn"> <Contents> <urlconnection url="http://localhost:7101" name="rest_conn"/> </Contents> </XmlRefAddr> </RefAddresses> </Reference>
RESTクライアントでこの接続に基づくURIを使用するには、「アドレス」にc
と入力します。エディタに使用可能なURIのリストが表示され、そのうちの1つにconnection://rest_conn
があります。リクエストを実行すると、この接続は実際のURIであるhttp://localhost:7101
に解決されます。
場合によっては、次の例のように、有効なレスポンスを戻すためにパスの別の部分を追加する必要もあります。たとえば、connection://rest_conn/departments
のように指定します。
アプリケーションに基づいてURIを作成する手順:
アプリケーションのconnections.xml
ファイルを開き、使用する接続名を特定します。「接続」ビューのメニュー・バーで、をクリックすると、connections.xmlがOEPEソース・エディタで開きます。
RESTサービス・エディタのRESTクライアント・ページで、「アドレス」に接続名の入力を開始します。
使用可能な接続のリストから使用する接続を選択し、必要に応じてパスの別の部分を追加します。
アプリケーションで設定された認証を持つ接続に対して接続URIを使用できます。connections.xml
ファイルで、接続のHttpURLConnection
に、値の設定されたadfCredentialStoreKey
があります。
をクリックすると、「認証情報」ダイアログが表示され、接続に関連付けられたユーザー名とパスワードを入力できます。
現在のセッションのみでなく、いつでも使用できる永続接続を作成できます。永続アドレスは、それらに入力する名前から使用できます。
永続接続は「接続」ビューに表示されます。詳細は、第16.8,項「「接続」ビューの使用」を参照してください。
永続接続を作成する手順:
RESTサービス・エディタのRESTクライアント・ページで、をクリックして接続の管理ウィザードを開きます。
図16-7のダイアログで、接続の名前とURLを入力します。ウィザードのこのページでは次のことが可能です。
をクリックしてURIをテストします。
をクリックしてブラウザでURIを開きます。
接続の認証の詳細を指定する必要がある場合、「認証が必要」を選択してウィザードの残りのページで認証値を入力します。詳細は、第16.2.1.8項「認証を使用する方法」を参照してください。
セキュリティ・ポリシーを指定するには、ポリシーの表示をクリックして、該当するポリシーを選択します。詳細は、第15.6項「セキュアなWebサービスへのアクセス」を参照してください。
OWSMモバイル・エージェントの一部のプロパティをオーバーライドして、実施中のOWSMポリシーの基礎となる動作を変更できます。これは、次のポリシーに対してのみ使用できます。
oracle/http_basic_auth_over_ssl_client_policy
oracle/wss_http_token_over_ssl_client_policy
oracle/wss_http_token_client_policy
preemptive
をtrue
またはfalse
のいずれかに設定できます。これらのポリシーでpreemptive
をtrue
に設定すると、保護されたREST Webサービスへの最初のリクエストに基本認証ヘッダーが挿入されます
オーバーライド・プロパティを使用してOWSMポリシーを変更する手順:
接続の管理ダイアログで、オーバーライド・プロパティを設定するOWSMポリシーを選択します。
をクリックして、「プロパティのオーバーライド」ダイアログを開きます。
をクリックして、オーバーライド・プロパティの選択ダイアログを開きます。使用可能なプロパティのリストから選択して、「OK」をクリックします。
「プロパティのオーバーライド」ダイアログで、プロパティの値を選択します。「OK」クリックして、接続の管理ダイアログに戻ります。
認証で保護されているRESTサービスに接続する場合、接続情報の一部として認証を入力します。RESTクライアント・ページで、これは次のいずれかの場合です。
「アドレス」フィールドにURIを入力してセッション接続を作成する場合、またはをクリックしてアドレス構成ダイアログを開く場合。この場合、をクリックします。
または、すでに適用された認証があるアプリケーション接続を指す接続URIを使用できます。詳細は、第16.2.1.5項「アプリケーションの接続名を使用する方法」を参照してください。
をクリックして接続の管理ウィザードを開き、永続接続を作成する場合。この場合、HTTP URL接続の作成ページで「認証が必要」を選択します。
RESTサービス・エディタでは、HTTP BasicおよびOAUTH 2接続がサポートされます(第16.2.1.8項「RESTサービス認証」を参照)。
HTTP Basic、Digest、Universal: サーバーへのリクエスト送信時に使用するユーザー名とパスワードを入力します。
OAuth 2 (コード権限タイプ): 認可URIを使用したOAuth 2認証。
OAuth 2 (リソース所有者パスワード資格証明タイプ): ユーザー名とパスワードを使用したOAuth 2認証。
OAuth 2 ("クライアント資格証明"権限タイプ): クライアント資格証明を使用したOAuth 2認証。
RESTサービス接続の認証を入力する手順:
RESTクライアント・ページで、次の操作を実行します。
「アドレス」フィールドにURIを入力するか、をクリックしてアドレス構成ダイアログを開き、セッション接続を作成する場合、をクリックして「認証情報」ダイアログを開きます。
をクリックして接続の管理ウィザードを開き、永続接続を作成する場合、HTTP URL接続の作成ページで「認証が必要」を選択します。
「認証タイプ」ページで、使用する認証タイプを選択し、「次へ」をクリックします。
接続の認証の詳細を入力して「終了」をクリックします。
モデル化されたREST APIからMAFアプリケーションとともに使用するJavaアーティファクトを作成する場合も、状況によっては認証を使用する必要があります。詳細は、第16.7.1項「RESTサービス用のJavaアーティファクトを生成する方法」を参照してください。
URIを指定したら、サーバーにリクエストを送信できます。
RESTサービスにリクエストを送信する手順:
使用するメソッドを選択します。
正しいURIが「アドレス」に指定されていることを確認します。
次のいずれかの方法でリクエストを実行します。
カーソルを「アドレス」に置いた状態で[Enter]を押します。
をクリックします。
リクエストを送信すると、サーバーからクライアントに戻されたHTTPレスポンスが「レスポンス」領域に表示されます(図16-9を参照)。
レスポンスのHTTPステータス・コードが表示されます。
レスポンス自体は、次の3つのタブに表示されます。
「ヘッダー」には、ヘッダーの名前と関連する値が表示されます(Content-Length
、ContentType
、Date
など)。
RAWコンテンツには、サーバーから取得された文字列が表示されます。をクリックして行を折り返すことができます。コンテンツがバイナリの場合、をクリックするとそれを文字列として表示できます。
レンダリング・コンテンツには、コンテンツ・タイプ(JSON、XML、HTMLまたはイメージ)に従って書式設定されたレスポンスが表示されます。他のコンテンツ・タイプは、このタブには表示されません。カーソルをノードの上に置くと、REST APIの理解に役立つ追加情報が表示されます。
をクリックすると、「レスポンス」領域にデータ型を表示できます。
REST APIリクエストは出力を指定しないため、コード生成時にOEPEは生成されたJava戻りタイプとしてoracle.eclipse.tools.rest.runtime.client.ResponseObject
を返します。これにより、アプリケーションに最も適した方法でリクエスト・レスポンス情報を処理できます。
メディアタイプが次のいずれかである状況ではコードを明確に処理します。
ワイルドカード(*/*)
イメージ(image/*
ResponseObject
では次のものにアクセスできます。
レスポンス・ヘッダー: レスポンス・ヘッダーのあるnot-<code>null</code>
マップ。
メディアタイプ: メディア・タイプ情報がない場合は長さがゼロ、または最初の要素が完全メディア・タイプ文字列(application/json
など)、2番目の要素がメディア・タイプ'type' (application)
、3番目がサブタイプ(json)
の長さ3
のnot-<code>null</code>
配列。
文字セット: <code>null</code>
またはレスポンスのメディア・タイプに適用される文字セット。
エンティティ: <code>null</code>
、空でない文字列またはレスポンスのエンティティを表す任意のオブジェクト(エンティティは通常、サーバーが返すコンテンツの表現です)。
Rawエンティティ: <code>null</code>
またはサーバーが返したままのオブジェクトで、通常は入力ストリームまたはバイト配列です。このオブジェクトのエンティティが{@link #isBufferedEntity() buffered}
ではない場合、このメソッドはbyte
配列を返します。
リクエスト・メッセージのコンテンツを変更して、サーバーからレスポンスで戻される内容を決定できます。これは、RESTクライアント・ページのリクエストに対して実行するか、REST APIページでREST APIをモデル化する場合に実行できます。
次のものを使用できます。
HTTPヘッダー
問合せパラメータ
入力(メソッドがPUTまたはPOSTの場合)
出力(メソッドがGETまたはPOSTの場合)
HTTPヘッダーを追加して、サーバーがリクエストに応答する方法を変更できます。たとえば、戻されるコンテンツ・タイプを指定できます(GETでのAccept=application/json
またはPOSTでのContent-Type=application/json
など)。
サーバーから戻されるコンテンツ・タイプを指定する手順:
リクエストの詳細領域の「ヘッダー」タブを選択したまま、をクリックして「ヘッダーの追加」ダイアログを開きます。
ダイアログで、リクエスト・ヘッダーの値を入力して「OK」をクリックします。名前と値のフィールドではコンテンツ・アシストが使用可能で、入力を開始すると使用可能なオプションが表示されます。
リクエストの詳細領域の「ヘッダー」タブで、適切なボタンを使用して、選択したヘッダーの編集または削除、並替え、または複数のヘッダーの削除を行うことができます。
問合せパラメータを使用して、サーバーから戻されるレスポンスを構成できます(verbose=false
など)。
問合せパラメータを使用する手順:
リクエストの詳細領域の「問合せパラメータ」タブを選択したまま、をクリックして「問合せパラメータの追加」ダイアログを開きます。
ダイアログで、問合せパラメータの値を入力して「OK」をクリックします。
リクエストの詳細領域の「問合せパラメータ」タブで、適切なボタンを使用して、選択した問合せパラメータの編集または削除、並替え、または複数の問合せパラメータの削除を行うことができます。
PUTまたはPOSTメソッドを使用している場合、リクエスト・メッセージの本文で入力を送信できます。
注意: RESTクライアントでの入力のみがリクエストの本文に含まれます。 |
入力を送信する手順:
「入力」タブを選択し、「本体」または「表現」を選択します。
本文の場合、テキスト領域に直接入力を指定します。次に例を示します。
{"name":"demo department"}
をクリックして行を折り返すことができます。
または、「パラメータ・リストとして表示」をクリックし、をクリックして本文パラメータの追加ダイアログを開きます。名前と値のペアを入力し、「OK」をクリックします。
リクエストの詳細領域の「入力」タブ、リクエストの詳細領域の「問合せパラメータ」タブで、適切なボタンを使用して、選択した入力パラメータの編集または削除、並替え、または複数の入力パラメータの削除を行うことができます。
表現の場合、をクリックして「表現」ダイアログを開き、入力のデータ型を選択します。
必要に応じて、「すべての属性」を選択解除し、使用する属性のみを選択します。サーバーが戻すことのできるデータ型および属性を選択することが重要です。
GETまたはPOSTメソッドを使用している場合、戻される出力を指定できます。たとえば、データ型の使用可能な属性のうちの一部のみをレスポンスで戻すように指定できます。
出力を指定する手順:
「出力」タブを選択します。
出力が表現とリダイレクションのいずれであるかを選択します。
表現の場合、をクリックして「表現」ダイアログを開き、レスポンスのデータ型を選択します。
必要に応じて、「すべての属性」を選択解除し、戻す属性のみを選択します。サーバーが戻すことのできるデータ型および属性を選択することが重要です。
リダイレクションの場合、必要なHTTPヘッダーを入力し、表現を入力します。
RESTサービス・エディタのREST APIページと「データ型」ページでは、REST APIをモデル化できます。まず、アプリケーションを開発してその実行対象とする既存のライブRESTサービスからRESTクライアント情報をインポートします。または、完全に新しいREST APIを作成できます(たとえば、提案されたRESTサービスに対してどのようにアプリケーションが実行されるかをテストするなど)。
RAML定義をMCS APIからインポートできます。これは、ローカルREST APIとして保存され、それを使用できます。
REST APIが完成したら、変更内容をRESTクライアント・ページにコピーして、ライブRESTサービスに対してリクエストを実行し、戻されるレスポンスを調査できます。
既存のRESTサービスに対してREST APIをモデル化する前に、サービスからRESTクライアント情報をインポートする必要があります。リクエストまたはデータ型(あるいはその両方)をインポートできます。
始める前に、次のことを実行しておく必要があります。
RESTサービス・エディタのRESTクライアント・ページでRESTサービスへの接続を作成します(第16.2.1項「RESTサービス接続の指定」を参照)。
データ型をインポートする場合、HTTPヘッダーを設定してレスポンスがJSONペイロードであることを指定します(第16.3.1項「リクエストでRESTヘッダーを使用する方法」を参照)。
RESTサービスに対してリクエストを実行します(第16.2.2項「RESTサービスへのリクエストの送信」を参照)。
RESTクライアント情報をインポートする手順:
RESTサービス・エディタのRESTクライアント・ページで、をクリックしてRESTクライアント情報のインポート・ウィザードを開きます。
ウィザードのRESTクライアント情報のインポート・ページで、インポートする内容を選択して「次へ」をクリックします。
リクエストをインポートする場合のみ、リクエストのインポート・ページが表示されます。リクエストのルート・パスと名前を入力します(図16-10を参照)。「次へ」をクリックします。
データ型をインポートする場合のみ、データ型のインポート・ページが表示されます。ウィザードによって表のデータ型が推測され、図16-11のように表示されます。情報をインポートするには、「終了」をクリックします。
リクエスト(またはリクエストとデータ型)をインポートする場合、RESTサービス・エディタはREST APIページに戻り、REST APIのモデル化を続行できます。
ウィザードで指定したパスはノードとして表示され、入力したリクエストはその下にリストされます(図16-12を参照)。
リクエスト(この例ではgetDepartments
)を選択すると、次の内容が表示されます。
また、データ型をインポートした場合、「データ型」ページには、エディタがRESTサービスから推測したデータ型および属性が表示されます。
REST APIをインポートすることは、ライブ・サービスに対してREST APIをモデル化する場合の安全で確実な方法です。別の方法として、すべて最初からREST APIをモデル化できます。次の方法でAPIのモデル化を続行することもできます。
RESTサービス・セグメントのアドレスであるパスを指定します。
サーバーのレスポンスを戻すことのできるリクエストを作成し、HTTPヘッダーと問合せパラメータの使用や、入力および出力パラメータの指定によってそれらを変更します。
エディタの「データ型」ページで新しいデータ型と属性を作成します。
REST APIが完成したら、変更内容をRESTクライアント・ページにコピーして、ライブRESTサービスに対してリクエストを実行し、戻されるレスポンスを調査できます。詳細は、第16.6項「RESTサービスに対するモデル化されたリクエストのテスト」を参照してください。
適切なノードを選択してさらにリクエストを定義します。
「HTTPヘッダー」タブでは、次のことが可能です。
リクエスト・ヘッダーの名前/値ペアを定義するには、をクリックして「ヘッダーの追加」ダイアログにそれらを入力します。
ボタンを使用して、選択したヘッダーの編集または削除、または複数のヘッダーの並替えを行うことができます。
「問合せパラメータ」タブでは、次のことが可能です。
問合せパラメータの名前/値ペアを定義するには、をクリックして「問合せパラメータ」ダイアログにそれらを入力します。
ボタンを使用して、選択した問合せパラメータの編集または削除、または問合せパラメータの並替えを行うことができます。
「入力」タブを使用して、PUTまたはPOSTリクエストで入力を送信します。
「出力」タブでは、リクエストから戻される結果に対する処理を選択できます。
タイプを「なし」、「表現」またはリダイレクションから選択します。
表現の場合、をクリックして表現の追加ダイアログを開き、データ型を指定します。
リダイレクションの場合、をクリックして「ヘッダー」タブにヘッダーの名前/値ペアを入力し、「表現」タブを選択してデータ型を指定します。
図16-15に示すように、RESTサービス・エディタのREST APIページでは、パス・セグメントに{variable-name}
の形式の変数が含まれる場合があります。タイプを変数に割り当てることができます(この変数はを生成されるコードで適用されます)。
Javaドメインの場合、変数のデフォルト値はjava.lang.Object
です。
同じ名前のパス・セグメントに変数がある場合、それらをデフォルト値にのみ割り当てることができます。
サポートされているデータ型は次のとおりです。
<default>
java.boolean
java.byte
java.char
java.double
java.float
java.int
java.long
java.short
java.lang.String
java.math.BigInteger
java.math.BigDecimal
java.util.Date
java.net.URI
java.lang.Object
java.time.LocalDateTime
java.time.LocalDate
java.time.LocalTime
json.String
json.Number
json.TRUE
json.FALSE
json.NULL
注意: デフォルトの型以外のデータ型が変数に割り当てられており、その変数の名前が変更されている場合、データ型の割当ては失われ、アクションを元に戻すか、データ型を再度割り当てることができます。 |
パス編集タイプを編集する手順:
REST APIページの右側の「パス」の「変数」セクションで、変数をダブルクリックします。変数タイプの編集ダイアログが開きます。
変数の新しいデータ型をリストから選択します。
パス変数のタイプは、RESTサービス・エディタのアーティファクト生成機能で使用され、生成されたメソッド・シグネチャで使用されるときにコードがどのように生成されるかをきめ細かく制御できます。パス変数および生成の詳細は、第16.7.1,項「RESTサービス用のJavaアーティファクトを生成する方法」を参照してください。
パス変数のタイプを指定した場合、このタイプは生成されたメソッド・シグネチャで使用されます。パス変数の文字列値表現によって、対応する変数テンプレート値が置き換えられます。{id}/{id2}/{id}
などの重複パス変数の場合、メソッド・シグネチャには、パス変数id
およびid2
のマッピング情報が含まれ、id
パラメータによって表されるタイプに相当する文字列値によって、このパス・セグメント内の一致する値がすべて置き換えられ、id2
に相当する文字列値によって、指定したパス・セグメント内の値が置き換えられます。
パラメータ変数のデフォルトのタイプの動作を制御できます。次に示すアーティファクトの生成ウィザードで、パススルーのデフォルトの動作により、パラメータ・タイプがjava.lang.Object
に設定されます。このため、REST APIデータ型が<default>
で、ウィザードの生成設定ページでパラメータ・デフォルト・タイプなしが選択されている場合、Javaメソッド・パラメータ・タイプ・シグネチャはjava.lang.Object
に設定されます。生成設定UIページで、java.lang.String
またはjava.lang.Object
を明示的に設定することで、パラメータ・デフォルト・タイプを制御できます。この選択は、注釈としてREST記述.xmi
内で永続化されるため、アーティファクトの生成ウィザードに再入力すると、ステートフルな選択になります。
重複した名前で変数のタイプを指定した場合、RESTサービス・エディタのRESTクライアント・ページからリクエストを送信すると、変数の置換ダイアログが表示され、図16-16に示すように、リクエスト変数ごとに値を指定できます。
変数の置換ダイアログでタイプ情報を使用できます。
たとえば、パス変数にjava.boolean type
がある場合、ダイアログにはチェック・ボックスが表示されます。
たとえば、タイプjava.float
のパス変数に入力した値がJava浮動小数点数の形式に順序していることを検証できます。
変数の置換ダイアログで、<default>
、java.lang.String
およびjava.lang.Object
は文字列と同様に扱われます。JSON型はJava型にマップされます。
json.String
はjava.lang.String
にマップされます
json.Number
はjava.math.BigDecimal
にマップされます
json.True
およびjson.FALSE
はjava.boolean
にマップされます
json.NULL
はjava.lang.Object
にマップされます(ダイアログでjava.lang.String
として扱われます)。
Boolean
型および日時型(java.util.Date
、java.time.LocalDateTime
、java.time.LocalDate
およびjava.time.LocalTime
)の場合、図16-17に示すように、変数の置換ダイアログにこれらの変数が表示され、java.time.LocalDateTime
およびjava.util.Date
が示されます。
RESTサービス・エディタの「データ型」ページでは、データ型を操作できます。RESTクライアントを使用してRESTサービスに接続する場合、エディタによって、接続先のサービスで使用されるデータ型が推測され、ここに表示されます。
RESTサービス・エディタの「データ型」ページを使用して、MCSバックエンドのAPIおよびローカル・ファイル・システム上のRAMLファイルに関連付けられているデータ型をインポートできます。
図16-18で、Departments
は、右側にリストされた属性を持つローカル・データ型です。
「データ型」ページの左側の「アウトライン」は、「アウトライン」ウィンドウでも使用できます(図16-19を参照)。
新しい複合データ型または単純データ型を作成できます。
複合データ型を作成する手順:
「ローカル・データ型」を右クリックし、「新」および「複合タイプ」を選択します。
「複合タイプ」で、型の名前を入力します。
「アウトライン」で、新しい型を右クリックし、「新」および「属性」を選択します。
右側の「複合タイプ」の下の「属性」領域で、をクリックしてデータ型の選択ダイアログを開き、使用可能なデータ型のリストから選択できます。
単純データ型を作成する手順:
「ローカル・データ型」を右クリックし、「新」および単純タイプを選択します。
単純タイプで、型の名前を入力します。
データ型は次からインポートできます。
Eclipseワークスペース
外部ファイル
MCSバックエンドAPI
ローカル・ファイル・システムのRAMLファイル
データ型をインポートする手順:
RESTサービス・エディタの「データ型」ページで、をクリックしてデータ型情報のインポート・ウィザードを開きます。
RESTインポート・メカニズムの選択で、データ型のソースを選択します。オプションは次のとおりです。
JSONスキーマ。JSONスキーマ定義からデータ型をインポートする場合に選択します。
JSONテキスト。JSONサンプル・テキストからデータ型をインポートする場合に選択します。
モバイル・バックエンドのデータ型。データ型がMCSバックエンドのAPIに関連付けられている場合に選択します。
RAMLファイル。ローカル・ファイル・システムのRAMLファイルに使用されるデータ型をインポートする場合に選択します。
「JSONスキーマ」またはJSONテキストを選択した場合は、「参照」をクリックし、コンテンツ・ファイルの選択で、JSONペイロードを含むファイルの場所に移動します。別の方法として、JSONペイロードをコピーし、それを直接「コンテキスト」テキスト領域に貼り付けることができます。
コンテンツ・ファイルの選択ダイアログで、JSONペイロードの文字セットを入力します(UTF-8
など)。
データ型情報のインポート・ウィザードで、「次へ」をクリックします。
データ型のインポート・ページに、インポートまたはマージされるデータ型のサマリーが表示されます。
既存のドメイン・タイプに一致する型をマージするには、該当するオプションを選択します。
「終了」をクリックします。
モデル化されたREST APIからRESTサービス・エディタのRESTクライアント・ページにリクエストをコピーして、ライブRESTサービスに対してそれらを実行できます。
注意: OWSMモバイル・エージェントが必要なRESTサービスに対して、保護およびモデル化されたすべてのリクエストをテストできない場合があります。ただし、OWSMポリシーを使用したBasic認可はサポートされています。 |
モデル化されたAPIからリクエストを実行する手順:
REST APIページで、実行するリクエストを選択します。
「リクエスト」領域の右上にあるをクリックします。
RESTクライアント・ページが開き、実行準備の整ったリクエストが表示されます。
をクリックします。
Oracle Enterprise Pack for Eclipseでは、Javaアーティファクトを作成して、RESTサービスに対して実行するMAF AMXアプリケーションを作成できます。
RESTサービス・エディタを使用して(第16.1項「RESTサービスの使用の概要」を参照)、使用するRESTサービスに接続し、利用可能な機能を使用して適切な結果が得られるようにREST APIをモデル化します。
MAFアプリケーションで使用できるJavaアーティファクトを生成する前に実行する手順は、次のとおりです。
RESTサービス記述を作成します(第16.1.6項「RESTサービス記述を作成する方法」を参照)。
RESTサービスに接続します(第16.2.1項「RESTサービス接続の指定」を参照)。
希望する機能を表現するようにREST APIをモデル化します(第16.4項「REST APIのインポートおよびモデル化」を参照)。
Javaアーティファクトは、RESTサービス・エディタのREST APIページまたは「データ型」ページで生成できます。
始める前に、リクエストとデータ型をRESTサービスのライブ・バージョンに対してテストし、サーバーからのレスポンスが期待どおりの内容であることを確認してください。
Javaアーティファクトを生成する手順:
RESTサービス・エディタで、REST APIページまたは「データ型」ページを選択します。
をクリックしてアーティファクト生成ウィザードを開きます。
アーティファクト・ジェネレータの生成ページで、アプリケーション開発の対象であるOracle MAFランタイムと互換性のあるコードを選択します。「次へ」をクリックします。
ベースURL選択ページで、次の操作を実行します。
ベース・リソース・パスは、REST API仕様のベースのパスです。
「名前」と「URL」は、永続接続です。をクリックして接続の管理ウィザードを開きます。
接続の管理ダイアログで、接続の名前とURLを入力します。ウィザードのこのページでは次のことが可能です。
をクリックしてURIをテストします。
をクリックしてブラウザでURIを開きます。
接続の認証の詳細を指定する必要がある場合、「認証が必要」を選択してウィザードの残りのページで認証値を入力します。
「終了」をクリックしてRESTful Webサービス・ウィザードに戻り、「次へ」をクリックします。
Javaクラス名とパッケージ名ページで、次の操作を実行します。
REST APIモデル・パスを展開してそれが正しいことを確認します。
必要に応じてJava名を変更します。
「次へ」をクリックします。
生成設定ページで、次の操作を実行します。
使用可能なソース・フォルダを選択します。
パッケージ接頭辞を受け入れるか、新しい名前を入力するか、または別の名前を参照して指定します。
注意: このパッケージの場所になんらかのコンテンツが存在すると、それらは上書きされる可能性があります。複数のベースURL選択は異なるパッケージ・スキームに書き込むことをお薦めします。 |
パラメータ・デフォルト・タイプ: REST APIデータ型が<default>
の場合、デフォルトはjava.lang.Object
です。必要な場合は、java.lang.String
に設定します。
サービス・クラスの生成がデフォルトで選択されます。独自のものを記述する場合は選択解除します。
MAF RESTクラスパス: MCSで使用するAPIを生成しており、プロジェクト・クラスパスおよびランタイム・デプロイメントに依存関係が追加される場合に選択します。
「次へ」をクリックします。
サービス・クラス・ページで、次の操作を実行します。
リストされているリクエストと、それが関連付けられているメソッド名を調査します。メソッド名を変更するには、リクエストを選択して「メソッド名」でメソッド名を編集します。
新しいリクエストを追加するには、をクリックしてリクエストの選択ダイアログを開きます。1つ以上のリクエストを選択し(複数選択の場合は[Shift]と[Ctrl]を使用)、「OK」をクリックします。
「次へ」をクリックします。
「サマリー」ページで、指定したオプションを確認します。問題なければ、「終了」をクリックします。「変更の確認」ダイアログが表示されます。続行して問題ない場合、「OK」をクリックします。
RESTサービスに対して選択されたリクエスト用にコードが生成されます。アーティファクトをすでに生成済で、差異が存在する場合、「Diff」ウィンドウが表示され、保持する変更を調整できます。
生成されたファイルは、プロジェクト・エクスプローラの指定したパッケージ名の下にリストされます(図16-20を参照)。
RESTサービス・エディタで、モデル化されたREST APIからJAVAアーティファクトを生成する場合、生成されるパッケージには次の3つのタイプがあります。
datatypes
restapi
services
図16-20は、hr
というパッケージに作成された、hrrest
というアプリケーション用に生成された複数のパッケージを示しています。
datatypeパッケージ(図16-20のhr.datatype
)には、次のものがあります。
データ型ごとに1つのインタフェース。
データ型インタフェースは、ゲッターおよびセッターとしてモデル化された属性を公開します。
データ型のインスタンスはリフレクションをサポートします。
オブジェクト・ファクトリ。
これは図16-21で確認できます(各データ型のインタフェースとオブジェクト・ファクトリがあります)。
データ型インタフェースには、ゲッターとセッターが含まれます。この例では、DepartmentObject.java
に次の内容が含まれます。
public interface DepartmentObject extends ObjectType { BigDecimal getDepartmentId(); void setDepartmentId(BigDecimal value); String getDepartmentName(); void setDepartmentName(String value); BigDecimal getLocationId(); void setLocationId(BigDecimal value); BigDecimal getManagerId(); void setManagerId(BigDecimal value); }
生成されたREST APIアーティファクトには、リクエストをJavaメソッドとして公開するネストされたインタフェースを含むパス・インタフェースがあります。図16-22のように、複数のREST APIパッケージが生成されます。
リクエスト・インタフェースには次のものが含まれます。
RESTサービスに対する各リクエストのメソッド(createDepartmentJSON
など)
クラスを公開するInvokeメソッド
たとえば、hr.restapi.hrservice.hrrest.resources.hrappsrvc.departments
のIdPath.java
には次の内容が含まれます。
public interface IdPath extends PathObject { @RequestAccessor public static interface Request { @Action(HTTPMethod.GET) @Header(name="Accept", value="application/json") @Output(representations=@Representation(type=DepartmentsObject.class)) DepartmentsObject getDepartmentById() throws RequestException; } @Override DepartmentsPath parent(); /** * @return creates a new object that exposes the requests * defined for this path */ Request invoke(); }
これは、図16-23に示すとおり、RESTサービス・エディタのREST APIページのgetDepartments
リクエストに反映されます(ここで、HTTPヘッダーはAccept=application/json
で、出力はデータ型Departments
の表現です)。
生成されたサービス・パッケージ(図16-24を参照)には、リクエストを定義するパスごとに1つのPOJOが含まれます(リクエストを含まないルートは除く)。POJOは、データ・コントロールで使用できるクラスで、他のパッケージのコンテンツを使用する方法に関するガイダンスになります。
この例で、DepartmentsService.java
はPOJOであり、REST APIパスのリクエスト・メソッドごとに1つのメソッドが含まれます。
public class DepartmentsService { public DepartmentsObject getDepartments() throws Exception { try (ClientContext context = LocalClientContextFactory.INSTANCE.create(ServiceUtil.CONNECTION_NAME)) { return PathFactory.INSTANCE.createHrservicePath(context).path(context.getConnectionPath()) .getHrrestPath() .getResourcesPath() .getHrappsrvcPath() .getDepartmentsPath() .invoke() .getDepartments(); } } public DepartmentObject addDepartment(DepartmentObject department) throws Exception { try (ClientContext context = LocalClientContextFactory.INSTANCE.create(ServiceUtil.CONNECTION_NAME)) { return PathFactory.INSTANCE.createHrservicePath(context).path(context.getConnectionPath()) .getHrrestPath() .getResourcesPath() .getHrappsrvcPath() .getDepartmentsPath() .invoke() .addDepartment(department); } } public DepartmentObject updateDepartment(DepartmentObject department) throws Exception { try (ClientContext context = LocalClientContextFactory.INSTANCE.create(ServiceUtil.CONNECTION_NAME)) { return PathFactory.INSTANCE.createHrservicePath(context).path(context.getConnectionPath()) .getHrrestPath() .getResourcesPath() .getHrappsrvcPath() .getDepartmentsPath() .invoke() .updateDepartment(department); } } }
MAFアプリケーションがRESTサービスと相互作用できるようにするには、RESTサービス・エディタを使用してREST APIをモデル化し、アプリケーションで使用するアーティファクトを生成します。
データ・ロジックは、生成されたサービスPOJOから作成されるJavaBeanデータ・コントロールを通じて公開されます。
RESTサービス用のJavaBeanデータ・コントロールを作成する手順:
生成されたサービスPOJOを選択します(第16.7.3.3項「生成されるサービス・アーティファクト」を参照)。
プロジェクト・エクスプローラまたはパッケージ・エクスプローラで、サービス・ファイルを右クリックしてモデル・コンポーネント→「データ・コントロールの作成」を選択し、新規データ制御ウィザードを開きます。
ウィザードを完了します。JavaBeanデータ・コントロールが作成され、それをMAFアプリケーションで使用できます。
「接続」ビューには、MAFアプリケーションのエディタおよびアーティファクト間で共有される、MAFアプリケーションによって定義される接続が表示されます。たとえば、セキュリティのためにRESTクライアントで使用される接続などです。
たとえば、RESTクライアント・ウィンドウで最初に使用される接続をエディタまたはツールで作成し、「接続」ビューを使用して、接続を後で編集したり、MAFアプリケーションの他の場所で接続を再利用します。
「接続」ビューには、接続をホストできるすべてのプロジェクトがリストされます。このため、MAF 2.0.2ランタイム以降を使用するMAFアプリケーションがビューにリストされます。以前のランタイムを使用するADFアプリケーションまたはMAFアプリケーションはリストされません。図16-25に示すように、アプリケーションのノードの下に接続がリストされます。これらは次のとおりです。
アイコンを使用するタイプURLの接続。
HTTP基本、Webシングル・サインオン、OAMMSおよびOAuth2の認証タイプのいずれかを使用するモバイル・ログイン接続。これらはを使用します。
接続名をダブルクリックすると、接続の管理ウィザードが開き、接続の様々な設定を編集できます。
これらの接続のコンテンツは、プロジェクトのconnections.xml
に格納され、そのファイルは、「接続」ビューから変更すると更新されます。プロジェクトを削除すると、そのプロジェクトのノードは「接続」ビューから削除されます。
「接続」ビューは、Oracle MAFパースペクティブで使用できます。閉じている場合は、メイン・メニューから「ウィンドウ」→「ビューの表示」→「接続」を使用して開くことができます。