仕事で簡単なAPIを実装する必要があったので、簡単にAPIドキュメントを公開したり、ドキュメントからStubを自動で用意する方法を調べてみた。
で、こちらの記事にやりたいことがまんま載っていた(ありがとうございます!)ので、 記事を参考に自分用のテンプレートを用意した。
Blueprint
Blueprintの記述は下記をページを参照。
api-mockの起動をgulpに設定する
以下のように設定し、$ gulp mock
var gulp = require('gulp'),
aglio = require('gulp-aglio'),
ApiMock = require('api-mock');
var TEMPLATE_FILES = ['apidocs/*.md'],
LAYOUT_FILE = 'apidocs/layout.md',
PUBLISHED_DIR = 'published';
gulp.task('api-mock', function () {
var mockServer = new ApiMock({
blueprintPath: PUBLISHED_DIR + '/index.md',
options: {
port: 3000
}
});
mockServer.run();
});
gulp.task('mock', ['api-mock']);
Vagrantで使う場合、ポートを開ける
vagrant上からaglioとapi-mockを使うには、デフォルトだと8088
と3000
を開ける必要があるので、Vagrant
ファイルに以下の設定を加える。
config.vm.network "forwarded_port", guest: 3000, host: 3000
config.vm.network "forwarded_port", guest: 8088, host: 8088
- APIドキュメントを閲覧 =>
http://localhost:8088
- StubでAPIのテストをする =>
http://localhost:3000/questions
POSTでJSONのテストをする
GETの場合は、ブラウザからそのままAPIをそのまま叩けばいいが、POSTの場合は curl を使う。
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST \
-d '{"name": "hoge" }' \
http://localhost:3000/user
もしくはChromeアプリのAdvanced REST clientなどを使ってテストする。