はじめに
AWS APIGatewayでAPIを作成する際、URLのパスをパラメータにするやり方を紹介します。
具体的にはこういう感じにしたい場合ですね。
https://xxx.execute-api.ap-northeast-1.amazonaws.com/test/10001
こうではありません。
https://xxx.execute-api.ap-northeast-1.amazonaws.com/test?tokenId=10001
詳細な手順は公式の以下に書いてありますが、ちょっとわかりづらかったので、やさしくまとめました。
https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/integrating-api-with-aws-services-lambda.html#api-as-lambda-proxy-expose-get-method-with-path-parameters-to-call-lambda-function
AWS APIGatewayでパスパラメータの設定を行う
GETメソッドを作る
とりあえず普通にGETを作ります。
「アクション」→「メソッドの作成」→GET
リソースを作る
次に、リソースを作ります。
「アクション」→「リソースの作成」
ここでポイントは、リソース名、リソースパスを{tokenId}のように設定することです。
※tokenIdはパラメータ名をセット
リソース配下にGETメソッドを作る
さらにリソース配下にGETメソッドを作ります。
「アクション」→「メソッドの作成」→GET
統合リクエスト
↓
マッピングテンプレートの追加
↓
application/json
↓
{
"tokenId": #if($input.params('tokenId')=='%2F')"/"#{else}"$input.params('tokenId')"#end
}
%2FはURLのエンコーディングを考慮しているようです。
あとはAPIをデプロイしてできあがり。