
はじめに
こんにちは!
クラウド事業部の升谷です。
本記事はAP Tech Blog Weekのものになります。
これまでAPI GatewayにてスタブAPIを作成する方法、APIキーの付与の方法を投稿してきました!
API Gateway初心者でも簡単にAPIが作成できますのでぜひハンズオンしてみてください!
今回は最後のパートです!
もう完成されているスタブAPIですが、さらにパワーアップしましょう!
受け取るAPIクエリによって応答を変えるよう改修していきます。
やりたいことのまとめ

↑のように設定を加え「HTTPステータスごとにAPI応答を定義する」ことで、
リクエストクエリによってスタブAPI応答を変えることを実現します!
今回は、whenというクエリに何が入っているかで応答が変わるように改修していきます。
whenクエリに2016がリクエストとして入っていた場合、ステータス300として、
2016年バージョンのJSONが返されるように設定します!
クエリの指定がない場合や2016以外がwhenクエリに入っていた場合は前回同様のデフォルトのJSONが返ってきます。
Let's get stated!
1. メソッドリクエストにてURLクエリ文字列パラメータを追加
クエリによって応答を変える第一歩として、クエリを登録します。
編集をクリックし、今回はwhenを追加しましょう!

2. 総合リクエストでマッピングテンプレートをアップデート!
編集をクリックし、デフォルトのステータス200しか定義されていなかったJSONから、
1で設定したwhenクエリに2016がリクエストとして入っていた場合、ステータス300を返すよう定義します。
変更前
{"statusCode": 200}
変更後
{
#if( $input.params('when') == "2016" )
"statusCode": 300
#else
"statusCode": 200
#end
}
3. メソッドレスポンスにてレスポンスを追加しよう!
メソッドレスポンスの次に総合レスポンスに行くのがミソです!
なので、次はメソッドレスポンスにてレスポンスを作成をクリックし、
ステータスコード300用のレスポンスの箱を用意してあげましょう。
コンテンツタイプにはapplication/jsonを定義します。

4. 総合レスポンスにてレスポンスを追加する!
レスポンスを作成をクリックし、ステータスコード300のレスポンスの箱にななにを入れるのかをここで定義します!
HTTPステータスの正規表現は好きに正規表現で定義できますが、今回は300とします。
メソッドレスポンスのステータスコードはプルダウンから先ほど3の手順で作成した300を選びます。

マッピングテンプレートには、2016年版の情報を用意します!
(猫を飼う前は犬派だったのとまだ学生でした!2016年より前を指定したらステータス200になって猫派になるではないか!というツッコミは一旦心の中にしまっておいてください、、、!!)
{
"name": "masuya",
"job": "student",
"catOrDog": "dog",
"petName": null
}
5. 最後にテストしてみましょう!
ターミナルにて以下のようにクエリを指定して実行してみます!
Part2から違う点として、URLを’’で囲んであげる必要があります。
curl 'https://URL/test(リソース名)/test(ステージ名)?when=2016(クエリ)' --header 'x-api-key:APIキー'
{
"name": "masuya",
"job": "engineer",
"catOrDog": "dog",
"petName": null
}
クエリを指定しなければステータス200の応答が返ってくることも確認できます!
curl 'https://URL/test(リソース名)/test(ステージ名)' --header 'x-api-key:APIキー'
{
"name": "masuya",
"job": "engineer",
"catOrDog": "cat",
"petName": "Simba"
}
おわりに
API GatewayでスタブAPIを作成し、応答をステータスによって変える方法を紹介しました!
Mockなのでどこまでできるかがわからず最初は手探りでしたが、
メソッドリクエスト・総合リクエスト・メソッドレスポンス・総合レスポンス
の4兄弟の仕組みを理解することで設定することができました!
Lambdaを評価するために簡単なスタブAPIが欲しかったので、
この一連の方法で簡単にAPIを用意することができました!
P.S. 以下はAPI Gatewayでスタブを作るPart1からPart3までの内容をぎゅっとまとめたLT資料です!
ぜひご覧ください。LTをしたイベントレポートもブログにする予定です!\(^^)/
参考
お知らせ
APCはAWS Advanced Tier Services(アドバンストティアサービスパートナー)認定を受けております。

その中で私達クラウド事業部はAWSなどのクラウド技術を活用したSI/SESのご支援をしております。
www.ap-com.co.jp
https://www.ap-com.co.jp/service/utilize-aws/
また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。