Product を生成する
API Gatewayを使用するためにはまず商品を生成する必要があります。
① API Gateway > My Products メニューを選択します。
② Product 生成をクリックします。
① 商品生成に必要な値を入力します。
- 名前:商品の名前を入力します。
- 説明:商品の説明を入力します。
- 購読方法:購読の方法には2種類があります。
- 公開-自由購読:商品のAPIを誰でも使用できます。
- 保護-承認必要:商品のAPIを使用するためには掲示者の承認が必要です。
② Product を生成をクリックします。
① 生成された商品を照会できます。
API を生成する
生成された商品にAPIを生成します。商品には複数のAPIを生成できます。
① Product APIs アイコンをクリックします。
① API 生成 画面から移動後 新たな APIを選択します。
② API 生成に必要な値を入力します。
- API名: APIの名前を入力します。APIの名前は API Gatewayの呼び出しURLのルートに含まれます。
- 説明:APIに関する説明を入力します。
③ APIを生成をクリックします。
Resource を生成する
APIが生成されれば基本として Root Resource(/)が追加されます。
Root 下位に/pets リソースを生成します。
① リソースを生成をクリックします。
② Resource 生成に必要な値を入力します。
- Resource Path: API URLルートに使用する値を入力します。
括弧を使用してリソースをルート変数に指定できます。
例えば {variable}に定義されたリソースのルートは現在のルートを変数に使用します。
また{variable+}に定義されたリースのルートは下位リソースを含めたルートを変数に使用します。
ルート変数はエンドポイントのルートにパラメータで使用できます。 CORSの有効化: CORS(Cross-Origin Resource Sharing)を有効化するために追加設定値を入力します。
CORSを有効化するためには、 API Gatewayから CORS リクエストを処理するためにOPTIONSメソッドを生成します。
③ 生成をクリックします。
メソッドを生成する
/pets ResourceにGET メソッド(Method)を追加します。
① メソッドを生成をクリックします。
② 生成するメソッド(Method)を選択します。
エンドポイントを指定する
HTTP
サービスするバックエンドサーバの設定を入力します。
① メソッドの説明を入力します。Swaggerドキュメントを作成する際に使われます。
② HTTPを選択します。
③ HTTPを設定するための値を入力します。
- Stream: リクエストの性格がファイルアップロードであればこの設定をオンにします。
- Streamを切った場合の応答時間は30秒、最大要求サイズは10MBに制限されます。
- Streamをオンにした場合は、応答時間は5分、最大リクエストサイズは100MBに制限されます。
- Method: バックエンドサーバにリクエストするMethodを選択します。
- URLルート: バックエンドサーバにリクエストするドメインを除いたURLを入力します。
エンドポイントを呼び出すURLルートを定義します。
リソースルート変数及びリクエストパラメータで定義されたクエリストリングとヘッダーをパラメータに使用できます。
パラメータは括弧を使用して定義します。
④ API Key 必要、認証と有効性検査を選択します。
- API Key 必要: API Keyを使用するか否かを選択します。
- API Keyを使用しない場合 Product 購読方法とUsage Planの適用を受けません。
- 認証:認証方法を選択します。
- NONE: 認証をしません。
- IAM: NAVERクラウドプラットフォームから提供する IAM認証を使用します。
- 既に生成した Authorizerを使用できます。 Authorizerを生成するためには Authorizerの生成をご参照ください。
- 有効性検査:有効性検査の範囲を選択します。
- NONE: 有効性検査をしません。
- Query String & Headers: クエリストリングーとヘッダーに関する有効性検査をします。 有効性検査は Parameters タブから定義したAPI明細をご参照ください。
⑤ 保存をクリックします。
MOCK
API の呼び出し結果で常に設定した値を返還します。
① MOCKを選択します。
② MOCKを設定するための値を入力します。
- Status Code: リクエストに対するレスポンスコードを設定します。
- Header: リクエストのヘッダーを入力します。
- Response: リクエストに対する bodyを入力します。
③ 保存をクリックします。
NAVERクラウドプラットフォーム Service
NAVERクラウドプラットフォームから提供されるサービスを利用します。
① Naver Cloud Platform Serviceを選択します。
② エンドポイントに登録しようとするサービスとリージョン、アクションを選択します。
③ 保存をクリックします。
API 明細を定義する
API 明細を定義します。API明細はSwagger UIを生成する際に使われます。
① リクエストに対する明細を定義します。
クエリストリングとヘッダーはエンドポイントに呼び出すURLルートを定義する際にリソースルート変数のように変数で使用できます。
クエリストリング:リクエストのクエリストリングを定義します。必須かについて はいで指定すると有効性検査の対象に含まれます。
Array タイプである場合重複した名前で複数のクエリストリングを生成します。ヘッダー:リクエストのヘッダーを定義します。必須かについて はいで指定すると有効性検査の対象に含まれます。
フォームデータ:リクエストのフォームデータを定義します。フォームデータは有効性検査に含まれません。 Arrayタイプの場合は重複した名前で複数のフォームタイプを生成します。
ボディー:リクエストのボディーを定義します。ボディーのモデルは上段タブの Modelsに定義されたモデルを使用します。
コンテンツタイプ:リクエストのコンテンツタイプを指定
application/x-www-form-urlencoded, multipart/form-dataは定義されたフォームデータを利用してリクエストのボディーを生成します。
その他コンテンツタイプはボディーを利用します。
② レスポンスに対する明細を定義します。
- レスポンスコード:レスポンスコードを定義します。
- レスポンスコードを選択すると詳細明細を定義できます。
- コンテンツタイプ:レスポンスのコンテンツタイプを指定します。
ゲートウェイレスポンスを定義する
既に定義されてゲートウェイレスポンスを修正できます。
① Gateway Responses タブへ移動します。
② ゲートウェイに定義されたレスポンスタイプに対するレスポンスコードを修正します。
③ レスポンスヘッダーを定義します。
④ コンテンツタイプ別レスポンスメッセージを修正します。
コンテンツ変数
レスポンスヘッダーとレスポンスメッセージにはコンテンツ変数を使用できます。
コンテンツ変数 | 説明 |
---|---|
${context.productName} | Product 名 |
${context.apiName} | API名 |
${context.httpMethod} | メソッド |
${context.error.message} | エラーメッセージの文字列 |
${context.error.messageString} | エラーメッセージの文字列, "$context.error.message" |
${context.error.responseType} | レスポンスタイプ |
${context.identity.accountId} | AccessKeyのアカウントID (IAM認証を使用した場合) |
${context.identity.apiKey} | API Key (API Keyを使用する場合) |
${context.identity.sourceIp} | 呼出者IP |
${context.identity.user} | ${context.identity.accountId}同じ |
${context.identity.userAgent} | User Agent |
${context.path} | URLルート |
${context.protocol} | 呼び出しプロトコル、例) HTTP/1.1 |
${context.requestId} | リクエスト ID |
${context.requestTime} | 1970年 1月 1日 00:00:00協定世界時間(UTC)からの経過時間をミリセカンド(millisecond)で表示した数字 |
${context.resourcePath} | リソースルート |
${context.methodCode} | エンドポイントのメソッド |
${context.methodName} | エンドポイントのメソッド |
${context.status} | レスポンスコード |
${context.stage} | Stage名 |
${method.request.path.PARAM_NAME } |
リクエストのルート変数 |
${method.request.queryString.PARAM_NAME } |
リクエストのクエリストリング |
${method.request.header.PARAM_NAME } |
リクエストのヘッダー |
モデルを定義する
API明細で使用するためのモデルを定義します。
① Models タブへ移動します。
② 追加をクリックします。
① モデルを定義します。
Schema
- モデルを宣言する際には JSON schemaを使用します。
- 例
{ "title": "Person", "type": "object", "properties": { "firstName": { "type": "string" }, "lastName": { "type": "string" }, "age": { "description": "Age in years", "type": "integer", "minimum": 0 } }, "required": ["firstName", "lastName"] }
API テスト
登録したAPIを配布する前にきちんと作動するかをテストできます。
テストには認証及び使用計画は適用されません。
① テストするドメインを設定します。
② 前に定義したリクエストパラメータを設定します。
③ Testをクリックすると下にテスト結果が表示されます。