ヘッダーをスキップ

Oracle Enterprise Pack for Eclipse Oracle Mobile Application Framework (OEPE Edition)でのモバイル・アプリケーションの開発 リリース2.1.2 E64870-01 |
| 目次

前 | 次 |

# 16 RESTサービスの使用

この章では、コードの生成およびRESTサービスへのアクセス、その使用とテストに使用可能なREST APIおよびデータ型を作成できるRESTサービス・エディタについて説明します。

この章の内容は次のとおりです。

- 第16.1項「RESTサービスの使用の概要」

- 第16.2項「RESTクライアントの使用」

- 第16.3項「リクエスト・コンテンツの変更」

- 第16.4項「REST APIのモデル化」

- 第16.5項「データ型のモデル化」

- 第16.6項「RESTサービスに対するモデル化されたリクエストのテスト」

- 第16.7項「RESTサービス・アーティファクトの作成」

## 16.1 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.1 RESTクライアント・ページ

図16-1のRESTクライアント・ページでは、REST APIを公開している既存のアプリケーションを試すことができます。たとえば、アプリケーションがREST APIと相互作用する方法を調査し、サービスにリクエストを送信してサーバーからのレスポンスを確認できます。このページは、RESTサービス記述の永続状態の一部ではないため、変更によりエディタが不適切な状態になることも、エディタの保存時にそれらが永続化されることもありません。

図16-1 RESTクライアント・ページ

リクエストは次の操作によって変更できます。

- メソッドを選択します。「GET」、「POST」、「PUT」およびDELETEを選択できます。

- URIのフラグメントを使用してサービスの一部のみをアドレス指定します。

- 一致するレスポンスのみが戻されるようにリクエストの一部として問合せを送信します。

- ヘッダーを使用してレスポンスで戻される内容を定義します(コンテンツ・タイプの指定など)。

- 問合せパラメータを使用してレスポンスを構成します(`verbose=false`など)。

- POSTまたはPUTを使用する場合はリクエストの一部として情報を入力し、GETを使用する場合は情報を出力します。

また、RESTクライアント・ページで、RESTサービスからRESTクライアント情報をインポートできます。

### 16.1.2 REST APIページ

図16-2のREST APIページでは、REST APIをモデル化できます。RESTクライアントを使用してRESTサービスに接続した場合、サーバーからRESTクライアント情報をインポートできます。REST APIはこのページに表示され、その変更をモデル化できます。

図16-2 REST APIページ

「アウトライン」領域には、サービスのREST API仕様が表示されます。右側の領域のコンテンツは、仕様で選択されている内容に応じて変化します。アウトラインは、図16-3のように、OEPE IDEの「アウトライン」ウィンドウに反映されます。各操作は、RESTサービス・エディタのREST APIページで実行するか、REST APIページがエディタで選択されている場合は「アウトライン」ウィンドウで実行できます。

図16-3 「アウトライン」ウィンドウ

REST APIページで、次の操作によってREST APIを変更できます。

- サービスへの新しいパスを指定します。

- 新しいリクエストを作成し、HTTPヘッダーと問合せパラメータの使用や、入力および出力パラメータの指定によってそれらを変更します。

REST APIが完成したら、変更内容をRESTクライアント・ページにコピーして、ライブRESTサービスに対してリクエストを試行できます。

RESTサービスと連携して動作するMAFアプリケーションを開発している場合、アプリケーションで使用するREST APIに基づいてJAVAアーティファクトを生成できます。

### 16.1.3 「データ型」ページ

図16-4の「データ型」ページでは、REST APIで使用されるデータ型をモデル化できます。RESTクライアントを使用してRESTサービスに接続した場合、サーバーからRESTクライアント情報をインポートできます。インポートしたデータ型はこのページに表示され、その変更をモデル化できます。

図16-4 「データ型」ページ

「アウトライン」領域には、モデル化されたREST APIで使用されるデータ型が表示されます。右側の領域のコンテンツは、仕様で選択されている内容に応じて変化します。アウトラインは、図16-5のように、OEPE IDEの「アウトライン」ウィンドウに反映されます。各操作は、RESTサービス・エディタの「データ型」ページで実行するか、「データ型」ページがエディタで選択されている場合は「アウトライン」ウィンドウで実行できます。

図16-5 「アウトライン」ウィンドウ

「データ型」ページで、次の操作によってローカル・データ型を変更できます。

- 新しい属性を作成します。

- 新しい複合データ型または単純データ型を指定します。

データ型はファイルからインポートできます。

RESTサービスと連携して動作するMAFアプリケーションを開発している場合、アプリケーションで使用するデータ型に基づいてJAVAアーティファクトを生成できます。

### 16.1.4 認証の使用

RESTサービス・エディタでは、認証を使用するRESTサービスへの接続がサポートされます。使用できる認証のタイプは次のとおりです。

- HTTP (Basic、Digest、Universal)

- OAuth2 (コード権限タイプ)

- OAuth2 (リソース所有者パスワード資格証明タイプ)

RESTサービスへの接続を作成するときに、認証の詳細を設定します。詳細は、第16.2.1.7項「認証を使用する方法」を参照してください。

### 16.1.5 RESTサービス・エディタを開く方法

RESTサービス・エディタは次の場合に開かれます。

- OEPEアプリケーションで既存のRESTサービス記述を開く場合。

- OEPEで新しいRESTサービス記述を作成する場合。詳細は、第16.1.6項「RESTサービス記述を作成する方法」を参照してください。

### 16.1.6 RESTサービス記述を作成する方法

RESTサービス記述を作成して、作成済またはMAF 2.1以上に移行済のMAFアプリケーション用にモデル化されたREST APIを含めることができます。記述は、適切なフォルダのビュー・プロジェクトに格納されます。

始める前に:

- Oracle MAFパースペクティブを選択します。

- MAFアプリケーションを開くか作成します。

RESTサービス記述を作成する手順:

1. OEPEのメイン・メニューまたはMAFアプリケーションのいずれかのプロジェクトのコンテキスト・メニューから、「ファイル」→「新」→RESTサービス記述を選択します。

   または:

   1. プロジェクト・エクスプローラで、アセンブリ・プロジェクトを右クリックして、OEPEのメイン・メニューから「ファイル」→「新」→「その他」を選択します。

   2. 「新」ダイアログで、「Oracle」を展開してRESTサービス記述を選択します。「新」ダイアログで、「次へ」をクリックします。

2. RESTサービス記述ページで、記述を格納するアプリケーションのビュー・プロジェクトの親フォルダを選択します。たとえば、src.restというビュー・プロジェクトのフォルダを選択します。

   記述に名前を指定し、「終了」をクリックします。RESTサービス記述がRESTサービス・エディタで開かれます。

## 16.2 RESTクライアントの使用

図16-1のRESTクライアントでは、ライブRESTサービスに接続して連携動作できます。

### 16.2.1 RESTサービス接続の指定

RESTクライアントの一番上にある「リソース」領域で、接続に使用するメソッドとRESTサービスのURIを指定します(図16-6を参照)。

図16-6 RESTサービス接続

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を定義できます。詳細は、次を参照してください。

#### 16.2.1.1 単純なURIを入力する方法

RESTサービス・エディタのRESTクライアント・ページからRESTサービスに接続します。

RESTサービスへの単純なURIを入力する手順:

- 「アドレス」フィールドにURIを入力します。エディタへの入力を開始すると、同じセッション中の以前のエントリに基づいてURI候補が表示されます。

#### 16.2.1.2 RESTサービスのアドレスを構成する方法

RESTサービス・エディタのRESTクライアント・ページからRESTサービスに接続します。ダイアログによって、URIで直接表現できない任意の文字のエンコーディングが実行されます。

アドレスを構成する手順:

1. をクリックしてアドレス構成ダイアログを開きます。

2. 「セグメント」に、URIを入力します。

   別の方法として、アプリケーションの接続名を使用してURIを作成できます。詳細は、第16.2.1.5項「アプリケーションの接続名を使用する方法」を参照してください。

3. サーバーが問合せの結果のみを戻すように問合せを使用するには、第16.2.1.3項「リクエストに問合せを含める方法」を参照してください。

4. 宛先の特定の場所を指定するフラグメントを使用するには、第16.2.1.4項「リクエストにフラグメントを含める方法」を参照してください。

5. 認証が必要な場合、「リソース」セクションでをクリックして認証情報ウィザードを開きます。詳細は、第16.2.1.7項「認証を使用する方法」を参照してください。

#### 16.2.1.3 リクエストに問合せを含める方法

サーバーが問合せの結果のみを戻すようにURIの一部として問合せを送信できます。問合せ値を入力するか、接続の作成時に指定した変数を使用できます。

問合せを入力する手順:

1. をクリックしてアドレス構成ダイアログを開きます。

2. 問合せを入力するには、「問合せ」に値を入力します。

   たとえば、`http://server:port/hrrest/resources/hrappsrvc/departments`へのリクエストの送信時に、特にid=10である部門の詳細を取得する場合、アドレス`http://server:port/hrrest/resources/hrappsrvc/departments/10`を使用してこのオブジェクトのみに関するレスポンスを戻すことができます。

   問合せとして変数を使用することもできます。{ }で区切られた変数を入力します(`{id}`など)。リクエストを送信するときに、変数の置換ダイアログが表示され、変数ごとに値を入力できます。

#### 16.2.1.4 リクエストにフラグメントを含める方法

サーバーが宛先の特定の場所を指定するようにURIの一部としてフラグメントを使用できます。

フラグメントを使用する手順:

1. をクリックしてアドレス構成ダイアログを開きます。

2. 宛先の特定の場所を指定するフラグメントを使用するには、「フラグメント」にフラグメント名を入力します。

#### 16.2.1.5 アプリケーションの接続名を使用する方法

RESTクライアントで使用できるURIの特定のタイプがあり、この場合、URIで、RESTサービス記述がその一部となるアプリケーションの接続名を使用します。書式は`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を作成する手順:

1. アプリケーションの`connections.xml`ファイルを開き、使用する接続名を特定します。`connections.xml`ファイルは、adf/META-INFフォルダのMAFアプリケーションのアセンブリ・プロジェクトに含まれます。

2. RESTサービス・エディタのRESTクライアント・ページで、「アドレス」に接続名の入力を開始します。

3. 使用可能な接続のリストから使用する接続を選択し、必要に応じてパスの別の部分を追加します。

認証付きの接続を使用できます。たとえば、アプリケーションで設定された認証を持つ接続に対して`connection://`を使用できます。connections.xmlファイルで、接続の`HttpURLConnection`に、値の設定された`adfCredentialStoreKey`があります。

をクリックすると、「認証情報」ダイアログが表示され、接続に関連付けられたユーザー名とパスワードを入力できます。

#### 16.2.1.6 永続接続を作成する方法

現在のセッションのみでなく、いつでも使用できる永続接続を作成できます。永続アドレスは、それらに入力する名前から使用できます。

永続接続を作成する手順:

1. RESTサービス・エディタのRESTクライアント・ページで、をクリックして接続の管理ウィザードを開きます。

2. 図16-7のダイアログで、接続の名前とURLを入力します。ウィザードのこのページでは次のことが可能です。

   - をクリックしてURIをテストします。

   - をクリックしてブラウザでURIを開きます。

   - 接続の認証の詳細を指定する必要がある場合、「認証が必要」を選択してウィザードの残りのページで認証値を入力します。詳細は、第16.2.1.7項「認証を使用する方法」を参照してください。

図16-7 永続接続の作成

#### 16.2.1.7 認証を使用する方法

認証で保護されているRESTサービスに接続する場合、接続情報の一部として認証を入力します。RESTクライアント・ページで、これは次のいずれかの場合です。

- 「アドレス」フィールドにURIを入力してセッション接続を作成する場合、またはをクリックしてアドレス構成ダイアログを開く場合。この場合、をクリックします。

  または、すでに適用された認証があるアプリケーション接続を指す`connections://` URIを使用できます。詳細は、第16.2.1.5項「アプリケーションの接続名を使用する方法」を参照してください。

- をクリックして接続の管理ウィザードを開き、永続接続を作成する場合。この場合、HTTP URL接続の作成ページで「認証が必要」を選択します。

RESTサービス・エディタでは、HTTP BasicおよびOAUTH 2接続がサポートされます(第16.2.1.7項「RESTサービス認証」を参照)。

図16-8 RESTサービス認証

- HTTP Basic: サーバーへのリクエスト送信時に使用するユーザー名とパスワードを入力します。

- OAuth 2 (コード権限タイプ): 認可URIを使用したOAuth 2認証。

- OAuth 2 (リソース所有者パスワード資格証明タイプ): ユーザー名とパスワードを使用したOAuth 2認証。

RESTサービス接続の認証を入力する手順:

1. RESTクライアント・ページで、次の操作を実行します。

   - 「アドレス」フィールドにURIを入力するか、をクリックしてアドレス構成ダイアログを開き、セッション接続を作成する場合、をクリックして「認証情報」ダイアログを開きます。

   - をクリックして接続の管理ウィザードを開き、永続接続を作成する場合、HTTP URL接続の作成ページで「認証が必要」を選択します。

2. 「認証タイプ」ページで、使用する認証タイプを選択し、「次へ」をクリックします。

3. 接続の認証の詳細を入力して「終了」をクリックします。

モデル化されたREST APIからMAFアプリケーションとともに使用するJavaアーティファクトを作成する場合も、状況によっては認証を使用する必要があります。詳細は、第16.7.1項「RESTサービス用のJavaアーティファクトを生成する方法」を参照してください。

### 16.2.2 RESTサービスへのリクエストの送信

URIを指定したら、サーバーにリクエストを送信できます。

RESTサービスにリクエストを送信する手順:

1. 使用するメソッドを選択します。

2. 正しいURIが「アドレス」に指定されていることを確認します。

3. 次のいずれかの方法でリクエストを実行します。

   - カーソルを「アドレス」に置いた状態で[Enter]を押します。

   - をクリックします。

### 16.2.3 リクエストを送信する場合の処理

リクエストを送信すると、サーバーからクライアントに戻されたHTTPレスポンスが「レスポンス」領域に表示されます(図16-9を参照)。

レスポンスのHTTPステータス・コードが表示されます。

レスポンス自体は、次の3つのタブに表示されます。

- 「ヘッダー」には、ヘッダーの名前と関連する値が表示されます(`Content-Length`、`ContentType`、`Date`など)。

- RAWコンテンツには、サーバーから取得された文字列が表示されます。をクリックして行を折り返すことができます。コンテンツがバイナリの場合、をクリックするとそれを文字列として表示できます。

- レンダリング・コンテンツには、コンテンツ・タイプ(JSON、XML、HTMLまたはイメージ)に従って書式設定されたレスポンスが表示されます。他のコンテンツ・タイプは、このタブには表示されません。カーソルをノードの上に置くと、REST APIの理解に役立つ追加情報が表示されます。

図16-9 レスポンスのコンテンツ

をクリックすると、「レスポンス」領域にデータ型を表示できます。

## 16.3 リクエスト・コンテンツの変更

リクエスト・メッセージのコンテンツを変更して、サーバーからレスポンスで戻される内容を決定できます。これは、RESTクライアント・ページのリクエストに対して実行するか、REST APIページでREST APIをモデル化する場合に実行できます。

次のものを使用できます。

- HTTPヘッダー

- 問合せパラメータ

- 入力(メソッドがPUTまたはPOSTの場合)

- 出力(メソッドがGETまたはPOSTの場合)

### 16.3.1 リクエストでRESTヘッダーを使用する方法

HTTPヘッダーを追加して、サーバーがリクエストに応答する方法を変更できます。たとえば、戻されるコンテンツ・タイプを指定できます(GETでの`Accept=application/json`またはPOSTでの`Content-Type=application/json`など)。

サーバーから戻されるコンテンツ・タイプを指定する手順:

1. リクエストの詳細領域の「ヘッダー」タブを選択したまま、をクリックして「ヘッダーの追加」ダイアログを開きます。

2. ダイアログで、リクエスト・ヘッダーの値を入力して「OK」をクリックします。名前と値のフィールドではコンテンツ・アシストが使用可能で、入力を開始すると使用可能なオプションが表示されます。

3. リクエストの詳細領域の「ヘッダー」タブで、適切なボタンを使用して、選択したヘッダーの編集または削除、並替え、または複数のヘッダーの削除を行うことができます。

### 16.3.2 問合せパラメータを使用してレスポンスを構成する方法

問合せパラメータを使用して、サーバーから戻されるレスポンスを構成できます(`verbose=false`など)。

問合せパラメータを使用する手順:

1. リクエストの詳細領域の「問合せパラメータ」タブを選択したまま、をクリックして「問合せパラメータの追加」ダイアログを開きます。

2. ダイアログで、問合せパラメータの値を入力して「OK」をクリックします。

3. リクエストの詳細領域の「問合せパラメータ」タブで、適切なボタンを使用して、選択した問合せパラメータの編集または削除、並替え、または複数の問合せパラメータの削除を行うことができます。

### 16.3.3 入力を送信する方法

PUTまたはPOSTメソッドを使用している場合、リクエスト・メッセージの本文で入力を送信できます。

注意: RESTクライアントでの入力のみがリクエストの本文に含まれます。

入力を送信する手順:

1. 「入力」タブを選択し、「本体」または「表現」を選択します。

2. 本文の場合、テキスト領域に直接入力を指定します。次に例を示します。

       {"name":"demo department"}

   をクリックして行を折り返すことができます。

3. または、「パラメータ・リストとして表示」をクリックし、をクリックして本文パラメータの追加ダイアログを開きます。名前と値のペアを入力し、「OK」をクリックします。

   リクエストの詳細領域の「入力」タブ、リクエストの詳細領域の「問合せパラメータ」タブで、適切なボタンを使用して、選択した入力パラメータの編集または削除、並替え、または複数の入力パラメータの削除を行うことができます。

4. 表現の場合、をクリックして「表現」ダイアログを開き、入力のデータ型を選択します。

   必要に応じて、「すべての属性」を選択解除し、使用する属性のみを選択します。サーバーが戻すことのできるデータ型および属性を選択することが重要です。

### 16.3.4 出力を指定する方法

GETまたはPOSTメソッドを使用している場合、戻される出力を指定できます。たとえば、データ型の使用可能な属性のうちの一部のみをレスポンスで戻すように指定できます。

出力を指定する手順:

1. 「出力」タブを選択します。

2. 出力が表現とリダイレクションのいずれであるかを選択します。

3. 表現の場合、をクリックして「表現」ダイアログを開き、レスポンスのデータ型を選択します。

   必要に応じて、「すべての属性」を選択解除し、戻す属性のみを選択します。サーバーが戻すことのできるデータ型および属性を選択することが重要です。

4. リダイレクションの場合、必要なHTTPヘッダーを入力し、表現を入力します。

## 16.4 REST APIのモデル化

RESTサービス・エディタのREST APIページと「データ型」ページでは、REST APIをモデル化できます。まず、アプリケーションを開発してその実行対象とする既存のライブRESTサービスからRESTクライアント情報をインポートします。または、完全に新しいREST APIを作成できます(たとえば、提案されたRESTサービスに対してどのようにアプリケーションが実行されるかをテストするなど)。

REST APIが完成したら、変更内容をRESTクライアント・ページにコピーして、ライブRESTサービスに対してリクエストを実行し、戻されるレスポンスを調査できます。

### 16.4.1 RESTクライアント情報のインポート

既存のRESTサービスに対してREST APIをモデル化する前に、サービスからRESTクライアント情報をインポートする必要があります。リクエストまたはデータ型(あるいはその両方)をインポートできます。

始める前に、次のことを実行しておく必要があります。

- RESTサービス・エディタのRESTクライアント・ページでRESTサービスへの接続を作成します(第16.2.1項「RESTサービス接続の指定」を参照)。

- データ型をインポートする場合、HTTPヘッダーを設定してレスポンスがJSONペイロードであることを指定します(第16.3.1項「リクエストでRESTヘッダーを使用する方法」を参照)。

- RESTサービスに対してリクエストを実行します(第16.2.2項「RESTサービスへのリクエストの送信」を参照)。

RESTクライアント情報をインポートする手順:

1. RESTサービス・エディタのRESTクライアント・ページで、をクリックしてRESTクライアント情報のインポート・ウィザードを開きます。

2. ウィザードのRESTクライアント情報のインポート・ページで、インポートする内容を選択して「次へ」をクリックします。

3. リクエストをインポートする場合のみ、リクエストのインポート・ページが表示されます。リクエストのルート・パスと名前を入力します(図16-10を参照)。「次へ」をクリックします。

   図16-10 リクエストのインポート

4. データ型をインポートする場合のみ、データ型のインポート・ページが表示されます。ウィザードによって表のデータ型が推測され、図16-11のように表示されます。情報をインポートするには、「終了」をクリックします。

   図16-11 データ型のインポート

### 16.4.2 RESTクライアント情報をインポートする場合の処理

リクエスト(またはリクエストとデータ型)をインポートする場合、RESTサービス・エディタはREST APIページに戻り、REST APIのモデル化を続行できます。

ウィザードで指定したパスはノードとして表示され、入力したリクエストはその下にリストされます(図16-12を参照)。

図16-12 インポートされたリクエスト

リクエスト(この例では`getDepartments`)を選択すると、次の内容が表示されます。

- HTTPヘッダーがインポートされます(図16-13を参照)。

  図16-13 インポートされたヘッダー

- 出力がインポートされます(図16-14を参照)。

  図16-14 インポートされた出力

また、データ型をインポートした場合、「データ型」ページには、エディタがRESTサービスから推測したデータ型および属性が表示されます。

### 16.4.3 手動によるREST APIのモデル化

REST APIをインポートすることは、ライブ・サービスに対してREST APIをモデル化する場合の安全で確実な方法です。別の方法として、すべて最初からREST APIをモデル化できます。次の方法でAPIのモデル化を続行することもできます。

- RESTサービス・セグメントのアドレスであるパスを指定します。

- サーバーのレスポンスを戻すことのできるリクエストを作成し、HTTPヘッダーと問合せパラメータの使用や、入力および出力パラメータの指定によってそれらを変更します。

- エディタの「データ型」ページで新しいデータ型と属性を作成します。

REST APIが完成したら、変更内容をRESTクライアント・ページにコピーして、ライブRESTサービスに対してリクエストを実行し、戻されるレスポンスを調査できます。詳細は、第16.6項「RESTサービスに対するモデル化されたリクエストのテスト」を参照してください。

適切なノードを選択してさらにリクエストを定義します。

「HTTPヘッダー」タブでは、次のことが可能です。

- リクエスト・ヘッダーの名前/値ペアを定義するには、をクリックして「ヘッダーの追加」ダイアログにそれらを入力します。

- ボタンを使用して、選択したヘッダーの編集または削除、または複数のヘッダーの並替えを行うことができます。

「問合せパラメータ」タブでは、次のことが可能です。

- 問合せパラメータの名前/値ペアを定義するには、をクリックして「問合せパラメータ」ダイアログにそれらを入力します。

- ボタンを使用して、選択した問合せパラメータの編集または削除、または問合せパラメータの並替えを行うことができます。

「入力」タブを使用して、PUTまたはPOSTリクエストで入力を送信します。

「出力」タブでは、リクエストから戻される結果に対する処理を選択できます。

1. タイプを「なし」、「表現」またはリダイレクションから選択します。

2. 表現の場合、をクリックして表現の追加ダイアログを開き、データ型を指定します。

   リダイレクションの場合、をクリックして「ヘッダー」タブにヘッダーの名前/値ペアを入力し、「表現」タブを選択してデータ型を指定します。

#### 16.4.3.1 新しいリクエストを作成する方法

新しいリクエストを作成する手順:

1. 「アウトライン」でノードを右クリックし、「新」および「リクエスト」を選択します。

2. 右側の「リクエスト」の下で、メソッドを選択して名前を追加し、リクエストの残りを定義します。

#### 16.4.3.2 新しいパスを作成する方法

異なるURIに対する新しいパスを作成できます。または、次のものを作成できます。

新しいパスを作成する手順:

1. 「アウトライン」でノードを右クリックし、「新」および「パス」を選択します。

2. 右側の「パス」の下で、次のいずれかの操作を行います。

   - { }を使用して変数を入力します({id}など)。

   - URIを入力します。

   - をクリックしてアドレス構成ダイアログを開き、URIを定義します。

## 16.5 データ型のモデル化

RESTサービス・エディタの「データ型」ページでは、データ型を操作できます。RESTクライアントを使用してRESTサービスに接続する場合、エディタによって、接続先のサービスで使用されるデータ型が推測され、ここに表示されます。

図16-15 REST APIのデータ型

図16-15で、`Departments`は、右側にリストされた属性を持つローカル・データ型です。

「データ型」ページの左側の「アウトライン」は、「アウトライン」ウィンドウでも使用できます(図16-16を参照)。

図16-16 「アウトライン」ウィンドウ

### 16.5.1 データ型を作成する方法

新しい複合データ型または単純データ型を作成できます。

複合データ型を作成する手順:

1. 「ローカル・データ型」を右クリックし、「新」および「複合タイプ」を選択します。

2. 「複合タイプ」で、型の名前を入力します。

3. 「アウトライン」で、新しい型を右クリックし、「新」および「属性」を選択します。

4. 右側の「複合タイプ」の下の「属性」領域で、をクリックしてデータ型の選択ダイアログを開き、使用可能なデータ型のリストから選択できます。

単純データ型を作成する手順:

1. 「ローカル・データ型」を右クリックし、「新」および単純タイプを選択します。

2. 単純タイプで、型の名前を入力します。

### 16.5.2 データ型をインポートする方法

データ型をEclipseワークスペースまたは外部ファイルからインポートできます。

データ型をインポートする手順:

1. RESTサービス・エディタの「データ型」ページで、をクリックしてデータ型情報のインポート・ウィザードを開きます。

2. 「参照」をクリックし、コンテンツ・ファイルの選択で、JSONペイロードを含むファイルの場所に移動します。別の方法として、JSONペイロードをコピーし、それを直接「コンテキスト」テキスト領域に貼り付けることができます。

3. コンテンツ・ファイルの選択ダイアログで、JSONペイロードの文字セットを入力します(`UTF-8`など)。

4. データ型情報のインポート・ウィザードで、「次へ」をクリックします。

5. データ型のインポート・ページに、インポートまたはマージされるデータ型のサマリーが表示されます。

   既存のドメイン・タイプに一致する型をマージするには、該当するオプションを選択します。

   「終了」をクリックします。

## 16.6 RESTサービスに対するモデル化されたリクエストのテスト

モデル化されたREST APIからRESTサービス・エディタのRESTクライアント・ページにリクエストをコピーして、ライブRESTサービスに対してそれらを実行できます。

モデル化されたAPIからリクエストを実行する手順:

1. REST APIページで、実行するリクエストを選択します。

2. 「リクエスト」領域の右上にあるをクリックします。

3. RESTクライアント・ページが開き、実行準備の整ったリクエストが表示されます。

4. をクリックします。

## 16.7 RESTサービス・アーティファクトの作成

Oracle Enterprise Pack for Eclipseでは、Javaアーティファクトを作成して、RESTサービスに対して実行するMAF AMXアプリケーションを作成できます。

RESTサービス・エディタを使用して(第16.1項「RESTサービスの使用の概要」を参照)、使用するRESTサービスに接続し、利用可能な機能を使用して適切な結果が得られるようにREST APIをモデル化します。

MAFアプリケーションで使用できるJavaアーティファクトを生成する前に実行する手順は、次のとおりです。

1. RESTサービス記述を作成します(第16.1.6項「RESTサービス記述を作成する方法」を参照)。

2. RESTサービスに接続します(第16.2.1項「RESTサービス接続の指定」を参照)。

3. 希望する機能を表現するようにREST APIをモデル化します(第16.4項「REST APIのモデル化」を参照)。

### 16.7.1 RESTサービス用のJavaアーティファクトを生成する方法

Javaアーティファクトは、RESTサービス・エディタのREST APIページまたは「データ型」ページで生成できます。

始める前に、リクエストとデータ型をRESTサービスのライブ・バージョンに対してテストし、サーバーからのレスポンスが期待どおりの内容であることを確認してください。

Javaアーティファクトを生成する手順:

1. RESTサービス・エディタで、REST APIページまたは「データ型」ページを選択します。

2. をクリックしてアーティファクト生成ウィザードを開きます。

3. アーティファクト・ジェネレータの生成ページで、アプリケーション開発の対象であるOracle MAFランタイムと互換性のあるコードを選択します。「次へ」をクリックします。

4. ベースURL選択ページで、次の操作を実行します。

   - ベース・リソース・パスは、REST API仕様のベースのパスです。

   - 「名前」と「URL」は、永続接続です。をクリックして接続の管理ウィザードを開きます。

5. 接続の管理ダイアログで、接続の名前とURLを入力します。ウィザードのこのページでは次のことが可能です。

   - をクリックしてURIをテストします。

   - をクリックしてブラウザでURIを開きます。

   - 接続の認証の詳細を指定する必要がある場合、「認証が必要」を選択してウィザードの残りのページで認証値を入力します。

   「終了」をクリックしてRESTful Webサービス・ウィザードに戻り、「次へ」をクリックします。

6. Javaクラス名とパッケージ名ページで、次の操作を実行します。

   - REST APIモデル・パスを展開してそれが正しいことを確認します。

   - 必要に応じてJava名を変更します。

   「次へ」をクリックします。

7. 生成設定ページで、次の操作を実行します。

   - 使用可能なソース・フォルダを選択します。

   - パッケージ接頭辞を受け入れるか、新しい名前を入力するか、または別の名前を参照して指定します。

     注意: このパッケージの場所になんらかのコンテンツが存在すると、それらは上書きされる可能性があります。複数のベースURL選択は異なるパッケージ・スキームに書き込むことをお薦めします。

   - サービス・クラスの生成がデフォルトで選択されます。独自のものを記述する場合は選択解除します。

   「次へ」をクリックします。

8. サービス・クラス・ページで、次の操作を実行します。

   - リストされているリクエストと、それが関連付けられているメソッド名を調査します。メソッド名を変更するには、リクエストを選択して「メソッド名」でメソッド名を編集します。

   - 新しいリクエストを追加するには、をクリックしてリクエストの選択ダイアログを開きます。1つ以上のリクエストを選択し(複数選択の場合は[Shift]と[Ctrl]を使用)、「OK」をクリックします。

   「次へ」をクリックします。

9. 「サマリー」ページで、指定したオプションを確認します。問題なければ、「終了」をクリックします。「変更の確認」ダイアログが表示されます。続行して問題ない場合、「OK」をクリックします。

### 16.7.2 Javaアーティファクトを生成する場合の処理

RESTサービスに対して選択されたリクエスト用にコードが生成されます。アーティファクトをすでに生成済で、差異が存在する場合、「Diff」ウィンドウが表示され、保持する変更を調整できます。

生成されたファイルは、プロジェクト・エクスプローラの指定したパッケージ名の下にリストされます(図16-17を参照)。

### 16.7.3 RESTサービスに対して生成されるアーティファクトについて

RESTサービス・エディタで、モデル化されたREST APIからJAVAアーティファクトを生成する場合、生成されるパッケージには次の3つのタイプがあります。

- `datatypes`

- `restapi`

- `services`

図16-17は、`hr`というパッケージに作成された、`hrrest`というアプリケーション用に生成された複数のパッケージを示しています。

図16-17 生成されたファイル

#### 16.7.3.1 生成されるデータ型アーティファクト

datatypeパッケージ(図16-17の`hr.datatype`)には、次のものがあります。

- データ型ごとに1つのインタフェース。

  - データ型インタフェースは、ゲッターおよびセッターとしてモデル化された属性を公開します。

  - データ型のインスタンスはリフレクションをサポートします。

- オブジェクト・ファクトリ。

これは図16-18で確認できます(各データ型のインタフェースとオブジェクト・ファクトリがあります)。

図16-18 生成されたデータ型アーティファクト

データ型インタフェースには、ゲッターとセッターが含まれます。この例では、`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);
    }

#### 16.7.3.2 生成されるREST APIアーティファクト

生成されたREST APIアーティファクトには、リクエストをJavaメソッドとして公開するネストされたインタフェースを含むパス・インタフェースがあります。図16-19のように、複数のREST APIパッケージが生成されます。

図16-19 生成された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-20に示すとおり、RESTサービス・エディタのREST APIページの`getDepartments`リクエストに反映されます(ここで、HTTPヘッダーは`Accept=application/json`で、出力はデータ型`Departments`の表現です)。

図16-20 REST APIページのgetDepartments

#### 16.7.3.3 生成されるサービス・アーティファクト

生成されたサービス・パッケージ(図16-21を参照)には、リクエストを定義するパスごとに1つのPOJOが含まれます(リクエストを含まないルートは除く)。POJOは、データ・コントロールで使用できるクラスで、他のパッケージのコンテンツを使用する方法に関するガイダンスになります。

図16-21 生成されたサービス・アーティファクト

この例で、`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);
        }
      }
    }

### 16.7.4 生成されたアーティファクトをMAFアプリケーションで使用する方法

MAFアプリケーションがRESTサービスと相互作用できるようにするには、RESTサービス・エディタを使用してREST APIをモデル化し、アプリケーションで使用するアーティファクトを生成します。

データ・ロジックは、生成されたサービスPOJOから作成されるJavaBeanデータ・コントロールを通じて公開されます。

RESTサービス用のJavaBeanデータ・コントロールを作成する手順:

1. 生成されたサービスPOJOを選択します(第16.7.3.3項「生成されるサービス・アーティファクト」を参照)。

2. プロジェクト・エクスプローラまたはパッケージ・エクスプローラで、サービス・ファイルを右クリックしてモデル・コンポーネント→「データ・コントロールの作成」を選択し、新規データ制御ウィザードを開きます。

3. ウィザードを完了します。JavaBeanデータ・コントロールが作成され、それをMAFアプリケーションで使用できます。