API Gateway で構築した REST API の存在しないパスへアクセスされた場合に 404 エラーを返したい
概要
API Gateway で構築した REST API の存在しないパスへアクセスされた場合、デフォルトだと 403 エラーで下記が返る。
{"message": "Missing Authentication Token" }
存在しないなら 404 エラーとして返したいよねって気持ちになった際の対処法を記載する。
対処法
ゲートウェイのレスポンスという設定を変えれば OK。
下記で編集ページまで行く。
デフォルトのステータスコードが403
なので404
に変える。
レスポンス内容を変えたければ、テンプレート本文を変更する。保存を忘れずに。
注意点として、ここのテンプレートには複雑な内容が書けない。例えば if / else を書いた場合、それがそのまま文字列になって返ってしまう。
エラーレスポンスを交換に準拠した形式にするには、カスタマイズを使用する必要があります。カスタマイズは、単純な変数の置換のみをサポートする VTL 以外のマッピングテンプレートでレンダリングされます。
結果
リソースが作られていない下記にアクセスした場合、
- xxx.execute-api.{region}.amazonaws.com/{stageName}
- xxx.execute-api.{region}.amazonaws.com/{stageName}/
- xxx.execute-api.{region}.amazonaws.com/{stageName}/hoge
404 エラーで、下記が返るようになる。
{"message":"Not Found"}
ただし、残念ながら下記のようなステージ名が指定されていない or 存在しない場合は、
- xxx.execute-api.{region}.amazonaws.com
- xxx.execute-api.{region}.amazonaws.com/
- xxx.execute-api.{region}.amazonaws.com/hoge
403 エラーで、下記が返ってきてしまう模様。。
{"message":"Forbidden"}