前回:API BlueprintでWeb APIのドキュメントを生成する - Qiita
概要
ここでは、api-mockを使って記述したドキュメント通りに動くWeb APIを立ててみます。
api-mockで立ち上がるモックサーバは、実際にはデータの追加や削除等のデータに応じたレスポンスを作ることはできません。APIを1から実装する段階ではあまり恩恵がありませんが、既に他のアプリケーションとの連携ができる場合などには、疎通確認したいといったケースには便利なツールです。
また、きちんとドキュメント通りに想定するレスポンスが返ってくるので、MacOSならパイプを挟んでpbcopy
することにより、手軽にコピペできる等の使い方も考えられます。
api-mockでWeb APIドキュメントからモックサーバを立ち上げる
api-mock
コマンドで先ほど作成したrecipe.apib
を指定するだけでサーバが立ち上がります。
$ api-mock recipe.apib
info: Enabled Cross-Origin-Resource-Sharing (CORS)
info: Allow-Origin: *
info: Allow-Methods: GET, PUT, POST, PATCH, DELETE, TRACE, OPTIONS
info: Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization, Referer, Prefer
info: Listening on port 3000
起動したところで、curl
で実際に記述したとおりのレスポンスが返ってくるかを確かめてみましょう。
$ curl http://localhost:3000/recipes/
{
"success": false,
"path": [],
"error": "show not implemented yet"
}%
$ curl http://localhost:3000/recipes/hoge
{
"error": "show not implemented yet",
"path": "/PTH/TO/XML/{name}.xml",
"success": false
}%
$ curl -X DELETE http://localhost:3000/recipes/hoge
{
"success": false,
"error": "delete not implemented yet"
}%
$ curl -X PUT http://localhost:3000/recipes/hoge
{
"success": false,
"path": "/PTH/TO/XML/{name}.xml",
"error": "save not implemented yet"
}%
これを見ると、一通り記述したとおりのレスポンスが返ってきているようです。実際に、前回の記事で使用したPython+Bottleのbottle/test2.py
を起動しておいてcurlで叩いても、同様の結果が返ってきます。
ちなみに、ルーティングが設定されていないURLにアクセスすると、以下のようなエラーが表示されます。
$ curl http://localhost:3000/recipe
Cannot GET /recipe
参考:モックサーバを手軽に作れる他のサービス
api-mockはAPI Blueprint用のモックサーバですが、他にもnpmベースのものやAWS上で作成するものなのがあるようです。