APIゲートウェイ・バック・エンドとしての標準レスポンスの追加
API Gatewayを使用した標準レスポンス・バック・エンドへのパスを定義する方法をご紹介します。
実際のバックエンド・サービスを設定せずに、APIゲートウェイにAPIが正常にデプロイされたことを確認することが多くあります。1つの方法として、'ダミー'のバック・エンドへのパスを持つAPIデプロイメント仕様のルートを定義します。そのパスに対するリクエストを受信すると、APIゲートウェイ自体がバック・エンドとして機能し、指定した標準レスポンスが返されます。
同様に、本番デプロイメントには、リクエストをバック・エンドに送信せずにルートの特定のパスで同じ標準レスポンスを一貫して返す場合があります。たとえば、パスのコールで、常に特定のHTTPステータス・コードをレスポンスに返す場合です。
APIゲートウェイ・サービスを使用して、常に同じものを返す標準レスポンス・バック・エンドへのパスを定義できます:
- HTTPステータス・コード
- HTTPヘッダー・フィールド(名前と値のペア)
- レスポンス本文のコンテンツ
標準レスポンスおよび標準レスポンス・バック・エンドの定義時には、次の制限に注意してください:
- 各ヘッダー名の長さは1KBを超えないようにする必要があります
- 各ヘッダーの値は、4KBの長さを超えないようにする必要があります
- 各本文レスポンスの長さ(エンコーディングを含む)は5KBを超えないようにする必要があります
- 標準レスポンス・バック・エンド定義に50を超えるヘッダー・フィールドを含めないようにする必要があります
次を実行して、APIデプロイメント仕様に標準レスポンス・バック・エンドを追加できます:
- コンソールの使用
- JSONファイルの編集
コンソールを使用したAPIデプロイメント仕様への標準レスポンスの追加
コンソールを使用してAPIデプロイメント仕様に標準レスポンスを追加するには:
-
コンソールを使用してAPIデプロイメントを作成し、「最初から」オプションを選択して、「基本情報」ページで詳細を入力します。
詳細は、APIデプロイメントの作成によるAPIゲートウェイへのAPIのデプロイおよびAPIゲートウェイの更新を参照してください。
-
「認証」ページで、認証オプションを指定します。
認証オプションの詳細は、APIデプロイメントへの認証と認可の追加を参照してください。
-
「ルート」ページで、新しいルートを作成し、次を指定します:
-
パス: リストされたメソッドを使用したバックエンド・サービスへのAPIコールのパス。指定するルート・パスで次の点に注意してください:
- デプロイメント・パス接頭辞に対して相対的です(APIデプロイメントの作成によるAPIゲートウェイへのAPIのデプロイを参照)
- 先頭にスラッシュ(/)を付ける必要があります。単一のスラッシュのみも可能です
- スラッシュは複数使用でき(連続していない場合)、スラッシュで終了できます
- 英数字の大文字と小文字を使用できます
- 特殊文字
$ - _ . + ! * ' ( ) , % ; : @ & =
を使用できます - パラメータおよびワイルドカードを使用できます(ルート・パスへのパス・パラメータおよびワイルドカードの追加を参照)
- メソッド: バックエンド・サービスが受け入れた1つ以上のメソッド。たとえば、
GET, PUT
です。 -
単一のバックエンドの追加または複数のバックエンドの追加: すべてのリクエストを同じバックエンドにルーティングするか、入力したコンテキスト変数およびルールに従ってリクエストを異なるバックエンドにルーティングするか。
これらの手順では、単一のバックエンドを使用することを想定しているため、「単一のバックエンドの追加」を選択します。または、異なるバック・エンドを使用する場合は、「複数のバックエンドの追加」を選択し、コンソールを使用したAPIデプロイメント仕様への動的バック・エンド選択の追加の手順に従います。
- バックエンド・タイプ:バックエンド・サービスのタイプ(
Stock Response
)。 - ステータス・コード: 有効なHTTPレスポンス・コード。たとえば、
200
-
本文: オプションで、レスポンス本文のコンテンツを適切なフォーマットで指定します。例:
-
Content-Type
およびtext/plain
のヘッダー名およびヘッダー値をそれぞれ指定すると、レスポンス本文が"Hello world"
のようになります。 Content-Type
およびapplication/json
のヘッダー名およびヘッダー値をそれぞれ指定すると、レスポンス本文が{"username": "john.doe"}
のようになります。
レスポンス本文は、(エンコーディングを含めて)5KBを超えないようにしてください。
-
-
ヘッダー名およびヘッダー値: オプションで、HTTPレスポンス・ヘッダーの名前とその値を指定できます。たとえば、
Content-Type
の名前とapplication/json
の値があります。複数のヘッダー名と値のペア(最大50個)を指定できます。いずれの場合も、次の点に注意してください:- ヘッダー名の長さは1KBを超えないようにする必要があります
- ヘッダー値の長さは4KBを超えないようにする必要があります
この例では、
/test
パスへのリクエストは、レスポンス本文で200ステータス・コードとJSONペイロードを返します。フィールド: 入力: パス: /test
メソッド: GET
バックエンド・タイプ: Stock Response
Status Code: 200
Body: {"username": "john.doe"}
ヘッダー名: Content-Type
ヘッダー値: application/json
この例では、
/test-redirect
パスへのリクエストによって、レスポンスのLocation
ヘッダーに302ステータス・コードと一時URLが返されます。フィールド: 入力: パス: /test-redirect
メソッド: GET
バックエンド・タイプ: Stock Response
Status Code: 302
Body: n/a ヘッダー名: Location
ヘッダー値: http://www.example.com
-
- (オプション)「別のルート」を選択して、追加ルートの詳細を入力します。
- 「次」を選択して、APIデプロイメント用に入力した詳細を確認します。
- APIデプロイメントを作成または更新するには、「作成」または「変更の保存」を選択します。
- (オプション) コールしてAPIが正常にデプロイされていることを確認します(APIゲートウェイにデプロイされたAPIのコールを参照)。
JSONファイルの編集によるAPIデプロイメント仕様への標準レスポンスの追加
JSONファイルでAPIデプロイメント仕様に標準レスポンスを追加するには:
-
任意のJSONエディタを使用して、標準レスポンス・バック・エンドを追加する既存のAPIデプロイメント仕様を編集するか、新しいAPIデプロイメント仕様を作成します(APIデプロイメント仕様の作成を参照)。
たとえば、次の基本的なAPIデプロイメント仕様では、OCI Functionsの単純なHello Worldサーバーレス・ファンクションを単一のバック・エンドとして定義しています:
{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } } ] }
-
routes
セクションで、標準レスポンス・バック・エンドの新しいpath
セクションを含めます:{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } }, { "path": "<api-route-path>", "methods": ["<method-list>"], "backend": { "type": "STOCK_RESPONSE_BACKEND", "status": <http-response-code>, "headers": [{ "name": "<header-name>", "value": "<header-value>" }], "body": "<body-content>" } } ] }
ここでは:
-
<api-route-path>
では、リストされているメソッドを使用して標準レスポンス・バック・エンドへのAPIコールのパスを指定します。指定するルート・パスで次の点に注意してください:- デプロイメント・パス接頭辞に対して相対的です(APIデプロイメントの作成によるAPIゲートウェイへのAPIのデプロイを参照)
- 先頭にスラッシュ(/)を付ける必要があります。単一のスラッシュのみも可能です
- スラッシュは複数使用でき(連続していない場合)、スラッシュで終了できます
- 英数字の大文字と小文字を使用できます
- 特殊文字
$ - _ . + ! * ' ( ) , % ; : @ & =
を使用できます -
パラメータおよびワイルドカードを使用できます(ルート・パスへのパス・パラメータおよびワイルドカードの追加を参照)
<method-list>
は、標準レスポンス・バック・エンドによって受け入れられる1つ以上のメソッドをカンマで区切って指定します。たとえば、"GET, PUT"
です。"type": "STOCK_RESPONSE_BACKEND"
は、APIゲートウェイ自体がバック・エンドとして機能し、定義した標準レスポンス(ステータス・コード、ヘッダー・フィールドおよび本文コンテンツ)を返すことを示します。<http-response-code>
は任意の有効なHTTPレスポンス・コードです。たとえば、200
"name": "<header-name>", "value": "<header-value>"
は、オプションでHTTPレスポンス・ヘッダーの名前とその値を指定します。たとえば、"name": "Content-Type", "value":"application/json"
です。headers:
セクションには、複数の"name": "<header-name>", "value": "<header-value>"
ペアを指定できます(最大50個)。いずれの場合も、次の点に注意してください:<header-name>
の長さが1KBを超えないようにする必要があります<header-value>
の長さは4KBを超えないようにする必要があります
"body": "<body-content>"
は、オプションでレスポンス本文のコンテンツを適切なフォーマットで指定します。例:-
Content-Type
ヘッダーがtext/plain
の場合、レスポンス本文は"body": "Hello world"
のようになります。 -
Content-Type
ヘッダーがapplication/json
の場合、レスポンス本文は"body": "{\"username\": \"john.doe\"}"
のようになります。JSONレスポンスの場合、レスポンスで引用符をバックスラッシュ(\
)文字でエスケープする必要があることに注意してください。
<body-content>
の長さが5KB(エンコーディングを含む)を超えないようにしてください。-
この例では、
/test
パスへのリクエストは、レスポンス本文で200ステータス・コードとJSONペイロードを返します。{ "routes": [ { "path": "/hello", "methods": ["GET"], "backend": { "type": "ORACLE_FUNCTIONS_BACKEND", "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq" } }, { "path": "/test", "methods": ["GET"], "backend": { "type": "STOCK_RESPONSE_BACKEND", "status": 200, "headers": [{ "name": "Content-Type", "value": "application/json" }], "body" : "{\"username\": \"john.doe\"}" } } ] }
この例では、
/test-redirect
パスへのリクエストによって、レスポンスのLocation
ヘッダーに302ステータス・コードと一時URLが返されます。この例では、STOCK_RESPONSE_BACKENDタイプのバック・エンドへのルートが1つのみのAPIデプロイメント仕様を作成できることも示しています。{ "routes": [ { "path": "/test-redirect", "methods": ["GET"], "backend": { "type": "STOCK_RESPONSE_BACKEND", "status": 302, "headers": [{ "name": "Location", "value": "http://www.example.com" }] } } ] }
-
- APIデプロイメント仕様を含むJSONファイルを保存します。
-
APIデプロイメント仕様は、次の方法でAPIデプロイメントを作成または更新するときに使用します:
- JSONファイルをコンソールで「既存のAPIのアップロード」オプションで指定します
- APIゲートウェイREST APIへのリクエストでJSONファイルを指定します
詳細は、APIデプロイメントの作成によるAPIゲートウェイへのAPIのデプロイおよびAPIゲートウェイの更新を参照してください。
- (オプション) コールしてAPIが正常にデプロイされていることを確認します(APIゲートウェイにデプロイされたAPIのコールを参照)。