APIドキュメントからモックサーバを立ち上げたい
APIドキュメント(API Blueprint)を記述するとモックサーバを立ち上げてくれるサービスがあります。 GitHubでAPIドキュメントを管理したり、モックサーバのアクセスログが見えたりの中々の優れ物です。
提供されるモックサーバがRESTful APIで少々融通が効かないこと、外部のWebサービスなので場合によっては採用しづらいのが難点。
ただ、API BlueprintのテストツールやモックサーバはOSSで提供されているので、サービスを使わずに利用することも可能のようです
api-mockで手軽にモックサーバを立ち上げる
公開されているモックサーバがJavaだったりして、ちょっと入れづらいなぁと思っていたら、api-mockなるモジュールがあるようですね。これもAPI Blueprintからモックサーバをたち上げてくれるようです
API Blueprint形式のAPIドキュメントを用意する
API Blueprintは、Markdownを拡張した形式です。
API Blueprint詳細
こんな感じでMethod,URI,Request,Response等を記述していきます
FORMAT: 1A HOST: http://example # Nopaste タイトルと本文を投稿します ## POST /api/nopaste + Request + Header Host: example + Parameters + title (required, string) ... タイトル + body (required, string) ... 本文 + Response 201 (text/html) + Header X-Framework: Ark + Body { "result": { "ok": 1 } }
API Blueprintはちょっと癖があったり未整備な所もあるのですが、現時点での要求としては十分かなと思っています。
api-mockを入れる
nodeで書かれているのでnpmを使ってインストールします
npm install -g api-mock
実行
では早速実行してみましょう
$ api-mock sample.md --port 3001 Listening on port 3001
コマンドラインから叩いて確認してみます
$ curl http://localhost:3001/api/nopaste/1234 { "result": { "title": "Hello Nopaste", "body": "Text" } }
$ curl -I http://localhost:3001/api/nopaste/1234 HTTP/1.1 200 OK X-Powered-By: Express Content-Type: application/json X-Framework: Ark Content-Length: 83 Date: Fri, 11 Apr 2014 04:05:05 GMT Connection: keep-alive
Headerに記述した"X-Framework: Ark"もちゃんと返ってきてますね
ドキュメントに記述した固定正常系のResponseしか返してくれませんが、それでもクライアントが サーバサイドの実装を待たずに疎通確認が出来るのはうれしいんじゃないかなと思っています
(このサンプルをApiary — Homeに持っていくとエラーになるんですが、統一感があるのでこちらの方がいいかなぁと…思っています)