この記事は何?
- API Gatewayのメソッド(Method)で、メソッドリクエスト(Method Request)で設定する項目について調べた結果のまとめです
- メソッドリクエストだけでも内容がいっぱい詰まっているので、その中の
リクエストの検証
部分を書いています
リクエストの検証
の設定で、GETパラメータやヘッダの必須チェック、POSTパラメータの属性(文字列や数字)チェックができる
- POSTのチェックは
モデル
を予め作っておいて、それを紐付ける
- 後続のlambdaを起動する前に、パラメータチェックできるのは良い
メソッド(method)には以下4つがある
- メソッドリクエスト(Method Request) ←今回はこれ
- 統合リクエスト(Integration Request)
- 統合レスポンス(Integration Response)
- メソッドレスポンス(Method Response)
メソッドリクエストで設定できる項目
- 設定
- 認証
- リクエストの検証 ←今回はこれ
- リクエストパス
- URLクエリ文字列パラメータ
- HTTPリクエストヘッダー
- リクエスト本文
- APIキーの必要性
- SDK設定
リクエストの検証
- API Gatewayの後ろ側にある処理やlambdaにパラメータを渡す前に検証ができる
- パラメータエラーの時にlambdaを起動しないで済む
- 検証の種類
- クエリ文字列とヘッダ
- クエリ文字列とヘッダと本文
- 本文のみ
- 各設定項目で詳細を設定するっぽい
URLクエリ文字列パラメータ
名前
はパラメータの名前
?param=1¶m=2
とかのクエリストリングのキー名
必須
チェックボックスはパラメータの必須チェックを指定できる
キャッシュ
チェックボックスは、APIキャッシュのキャッシュキーにクエリ文字列パラメータを含めるかどうかを選択できる
HTTP リクエストヘッダー
クエリ文字列パラメータとリクエストヘッダーをGETで検証
{
"message": "Missing required request parameters: [x-unko-header, param2]"
}
{
"statusCode": 200,
"body": "\"Hello Elastic!\""
}
リクエスト本文
- GETメソッドではサポートされない(メソッドテスト内に記述があった)
- POSTメソッドでパラメータの検証を行う
- リクエスト本文の検証をするためのモデルを作成する
参考ページと同じようにやってみる
- モデルの作成
{
"title": "testModel",
"type": "object",
"properties": {
"param1": {
"type": "string"
},
"param2": {
"type": "number"
}
},
"required": ["param1", "param2"]
}
- postメソッドのリクエスト本文に作成したモデルを設定する
- param1もparam2も両方stringで送ってみる
- エラーで返ってきた
{
"message": "Invalid request body"
}
- 正しいリクエストを送ってみる
- lambdaからのレスポンスが返ってきた
{
"statusCode": 200,
"body": "\"Hello Elastic!\""
}
次回
前回までの記事