REST サービスを初めて使用する開発者は、このサービス・スタイルの詳細を理解しておく必要があります。REST の紹介については、『Web サービスのアーキテクチャー・スタイル』を参照してください。
リソース、表現、URI、およびアクション
開発者の観点から見ると、REST に関連する主な概念は以下のようになります。
- 任意の時点で、リソース (データベースの従業員データ行など) には表現があります。表現は、従業員番号、肩書き、および給与を指定するプログラム値のセットである場合があります。
- リソースにはユニバーサル・リソース・インディケーター (URI) も含まれています。URI は、http://www.example.com/gateway/employee/0020 などの固有の名前です。
このケースでは、従業員番号は 0020 です。一般的に、URI でリソースに名前を指定します。また URI で、REST サービスへのアクセスに必要な主な詳細情報を指定します。
- アクション で、リソースに行う処理を指定します。可能なアクションは少ししかありません。リソースは、作成、読み取り、更新、または削除できます。
REST サービスのリクエスターは、リソースを識別してアクションを指定します。リソースの作成または更新に関係しているアクションの場合、リクエスターはリソースの表現を指定します。
パス変数と照会文字列
HTTP では、URI で、関係するリソースを次のように指定できます。
- URI にはパス変数 を組み込むことができます。パス変数とは、リソースを直接識別する値を持つ変数で、この際に、リソースを判別するためにサービスで入力を処理する必要がありません。次の例では、従業員番号 0020 がパス変数の値です。
http://www.example.com/gateway/employee/0020
パス変数は、ほとんどの場合に適切です。複数のパス変数の値を使用することができます。この場合は、スラッシュで前後を区切ります。複数の値をこのように使用して、階層関係を示します。例えば、次の URI のパス変数の値は、会社の事業部門 (消費者) と、その事業部門内の会社の部門(営業) を識別します。
http://www.example.com/gateway/employee/Consumer/Sales
EGL でサード・パーティー REST サービスにアクセスするコードを作成する場合は、URI の最後の部分のアウトラインである
URI テンプレート を作成します。
employeeNumber がパス変数であるテンプレートの例を以下に示します。
"/gateway/employee/{employeeNumber}"
URI テンプレートにパス変数を指定するには、変数名を中括弧で囲みます。
- GET 操作に関連して、URI を照会ストリング (名前と値のペアのセット) で補足することができます。次の例では、照会ストリングの前に疑問符 (?) が付けられ、名前と値の各ペアはアンパーサンド (&) で次のペアと分離されています。
http://www.example.com/gateway/employee?division=Consumer&department=Sales
照会変数 は、照会ストリング内の値のプレースホルダーです。
EGL で URI テンプレートを作成するときには、パス変数と同じ構文を使用して照会変数を指定します。次の例では、
divisionName と
departmentName が照会変数となっています。
"/gateway/employee?division={divisionName}&department={departmentName}"
パス変数の使用と比較すると、照会ストリングの使用は理想的ではない、つまり RESTful ではないと見なされます。照会ストリングの使用は、サービスが名前と値のペアをサービス・ロジックに対する入力として使用する場合に最適です。この場合、ロジックでは入力を使用してアクセスするリソースが判別されます。