APIゲートウェイ・バック・エンドとしての標準レスポンスの追加

APIゲートウェイを使用して、標準レスポンス・バック・エンドへのパスを定義する方法をご覧ください。

実際のバックエンド・サービスを設定せずに、APIゲートウェイにAPIが正常にデプロイされたことを確認することが多くあります。1つの方法として、'ダミー'のバック・エンドへのパスを持つAPIデプロイメント仕様のルートを定義します。そのパスに対するリクエストを受信すると、APIゲートウェイ自体がバック・エンドとして機能し、指定した標準レスポンスが返されます。

同様に、本番デプロイメントには、リクエストをバック・エンドに送信せずにルートの特定のパスで同じ標準レスポンスを一貫して返す場合があります。たとえば、パスのコールで、常に特定のHTTPステータス・コードをレスポンスに返す場合です。

APIゲートウェイ・サービスを使用して、常に同じものを返す標準レスポンス・バック・エンドへのパスを定義できます:

  • HTTPステータス・コード
  • HTTPヘッダー・フィールド(名前と値のペア)
  • レスポンス本文のコンテンツ

標準レスポンスおよび標準レスポンス・バック・エンドの定義時には、次の制限に注意してください:

  • 各ヘッダー名の長さは1KBを超えないようにする必要があります
  • 各ヘッダーの値は、4KBの長さを超えないようにする必要があります
  • 各本文レスポンスの長さ(エンコーディングを含む)は5KBを超えないようにする必要があります
  • 標準レスポンス・バック・エンド定義に50を超えるヘッダー・フィールドを含めないようにする必要があります

次を実行して、APIデプロイメント仕様に標準レスポンス・バック・エンドを追加できます:

  • コンソールの使用
  • JSONファイルの編集

コンソールを使用したAPIデプロイメント仕様への標準レスポンスの追加

コンソールを使用してAPIデプロイメント仕様に標準レスポンスを追加するには:

  1. コンソールを使用してAPIデプロイメントを作成または更新し、「最初から」オプションを選択して、「基本情報」ページで詳細を入力します。

    詳細は、APIデプロイメントの作成によるAPIゲートウェイへのAPIのデプロイおよびAPIゲートウェイまたはAPIデプロイメントの更新を参照してください。

  2. 「認証」ページで、認証オプションを指定します。

    認証オプションの詳細は、APIデプロイメントへの認証と認可の追加を参照してください。

  3. 「ルート」ページで、新しいルートを作成し、次を指定します:

    • パス: リストされたメソッドを使用したバックエンド・サービスへの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
    ステータスコード: 200
    本文: {"username": "john.doe"}
    ヘッダー名: Content-Type
    ヘッダー値: application/json

    この例では、/test-redirectパスへのリクエストによって、レスポンスのLocationヘッダーに302ステータス・コードと一時URLが返されます。

    フィールド: 入力:
    パス: /test-redirect
    メソッド: GET
    バックエンド・タイプ: Stock Response
    ステータスコード: 302
    本文: n/a
    ヘッダー名: Location
    ヘッダー値: http://www.example.com
  4. (オプション)「別のルート」をクリックして、追加ルートの詳細を入力します。
  5. 「次」をクリックして、APIデプロイメント用に入力した詳細を確認します。
  6. APIデプロイメントを作成または更新するには、「作成」または「変更の保存」をクリックします。
  7. (オプション) コールしてAPIが正常にデプロイされていることを確認します(APIゲートウェイにデプロイされたAPIのコールを参照)。

JSONファイルの編集によるAPIデプロイメント仕様への標準レスポンスの追加

JSONファイルでAPIデプロイメント仕様に標準レスポンスを追加するには:

  1. 任意の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"
          }
        }
      ]
    }
  2. 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コールのパスを指定します。指定するルート・パスで次の点に注意してください:

    • <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"
            }]
          }
        }
      ]
    }
  3. APIデプロイメント仕様を含むJSONファイルを保存します。
  4. APIデプロイメント仕様は、次の方法でAPIデプロイメントを作成または更新するときに使用します:

    • 「既存のAPIのアップロード」オプションを選択して、コンソールでJSONファイルを指定します
    • APIゲートウェイREST APIへのリクエストでJSONファイルを指定します

    詳細は、APIデプロイメントの作成によるAPIゲートウェイへのAPIのデプロイおよびAPIゲートウェイまたはAPIデプロイメントの更新を参照してください。

  5. (オプション) コールしてAPIが正常にデプロイされていることを確認します(APIゲートウェイにデプロイされたAPIのコールを参照)。