こんにちは、虎の穴ラボのH.Y.です。
開発で、スタブが欲しくなるタイミングってありますよね。
でも、スタブを作るために、1から環境作って開発するのも、稼働環境を用意するのも手間なので、
いいサービスがないかなと調べていたら、AWS API Gatewayで簡単にできるとのことでした。
参考の記事を見る限り、環境構築も必要なくブラウザ上でできそうなので、作ってみることにしました。
参考: 【AWS】API Gatewayで超手軽にMockを作成する。
API Gatewayを作成する
まず、大本になるAPI Gatewayを作成します。
今回は、オンプレ環境から使えるようにするため、REST APIで構築します。
下のように設定します。API名はstubにしました。
mockでスタブを作る
今回は、下のようなスタブを作ります。
GET /item/{item_code}
レスポンスは、パスパラメータのitem_codeと固定値を返すスタブにします。
{ "item_code": "{item_code}", "amount": 1 }
リソースの設定
まず、「/item/」部分を作ります。
アクションから、リソースの作成します。
リソース名とリソースパスを入力して、リソースの作成をします。
「{item_code}」を作ります。 作り方は、「/item/」と同じ方法でリソースの作成から行います。
GET部分のメソッドの設定
下のようになったら、/{item_code}を選択した状態で、GETを選択します。
Mockを選びます。
レスポンスの中身を作る
総合レスポンスのリンクをクリックすると、レスポンスを編集できます。
マッピングテンプレートのapplication/jsonをクリックするとレスポンスが修正できます。
レスポンスの中身は、下の通りにしました。
{ "item_code":"$input.params('item_code')" , "amount":1 }
item_codeはパスパラメータの内容をそのまま、amontは1固定で返答するようにしました。
API Gatewayのmockで使えることができる変数は、AWS公式で調べられます。
API Gateway マッピングテンプレートとアクセスのログ記録の変数リファレンス - Amazon API Gateway
完成したら、テストボタンを押して、テストをおこないます。
このスタブの場合は、パスパラメータしか使用しないので、パスのところに入力して、テストボタンを押します。
そうすると、右側のレスポンス本文のところに、結果が表示されます。
エラーパターンも盛り込む
このままだけだと、成功パターンしか試せないので、特定のitem_codeを入れると失敗するように変更します。 VLTという言語を使用しているらしく、リファレンスをみると、if文が使えるようなので、特定のitem_codeの時エラーパターンの処理を追記します。
Apache Velocity Engine VTL Reference
総合リクエストのリンクを選択し、
application/jsonのリンクをクリックすると特定の条件の時に、httpステータスコードを変えることができます。
#set($itemCode = $input.params('item_code')) #if($itemCode == "123") { "statusCode": 404 } #else { "statusCode": 200 } #end
item_codeが123の時は、404を返すようにします。
メソッドレスポンスに404の時の動作を設定します。
総合レスポンスに404の時のレスポンスを追加します。
application/jsonのマッピングテンプレートを追加し、下のように追加します。
{ "message": "指定したアイテムは存在しません。" }
設定後テストを行うと、ステータスとレスポンス本文がエラー用のメッセージになっていることがわかります。
デプロイ
このままだと、使えないのでデプロイして使える状態にします。
APIの選択状態から、APIのデプロイを選択します。
新しいステージを選択し、ステージ名を入力します。今回は、prodにしました。
デプロイが完了すると、APIのURLが生成されるので、これを元にAPIのアクセスします。
まとめ
以前まで、スタブ用にサーバを用意し、Java-Springや、RoRで作っていて、作るのも修正するのもかなりの手間がかかっていましたが API Gatewayでスタブを作った場合、サーバも用意する必要もなく、ブラウザ上で修正できるので、かなり簡単になります。
皆さんも、スタブを作る際は、 API Gatewayで作ってみてはいかがでしょうか。
P.S.
虎の穴ラボでは、私たちと一緒に新しいオタク向けサービスを作る仲間を募集しています。
詳しい採用情報は以下をご覧ください。
yumenosora.co.jp