はじめに
こんにちは!
クラウド事業部の升谷です。
本記事は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/
また、一緒に働いていただける仲間も募集中です!
今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。