概要
- アプリの開発を進めるには、APIの仕様 + API仕様通りのレスポンスを返すモックがあると捗る
- モックを簡単に効率良く作成する方法を調査
調査・検証
1.自分で仕様から書き起こす
長所
- 好きな言語で書ける
- 普段書かない言語を選択すればスキルアップ
短所
- 地味に大変
- 実際に使うときが面倒(ローカルか開発サーバ)
- 使いまわせない
- 時間がかかる
- 仕様変更ごとにコードを修正
2.JSONSchemaからの生成
長所
- JSON SchemaでAPIを設計することでfieldの型など仕様が明確になる。
- APIのレスポンスが正しいかValidationするのに使える。
- サーバ、クライアントどちらでもテストに使用できる
- ドキュメントを自動生成できる。
短所
- 書くのが大変
- json_worldというRubyのDSLでJSON Schemaが書けるgemがある
参考
- http://r7kamura.hatenablog.com/entry/2014/06/10/023433
- https://speakerdeck.com/izumin5210/client-development-using-json-schema-number-kanrk06
- http://qiita.com/izumin5210/items/9714af5018b908f35124
- http://sssslide.com/speakerdeck.com/co3k/json-schema-de-web-api-falsesukimawomai-meyou
- https://github.com/r7kamura/rack-json_schema
- https://github.com/retro/apitizer
3.Apiary
長所
- API BlueprintとよばれるMarkDownの拡張言語で記述
- レスポンスを定義するとエントリーポイントが用意されそのままMockになる
MSON
-
MSONを使うことでMarkDownでJSONレスポンスを書ける。
- Markdown Syntax for Object Notationの略
- ↓はApiaryでMSONを使ってAPIを定義したサンプル
### GET /mson_test
+ Response 200 (application/json)
+ Attributes
+ categories (array)
+ (object)
+ name: Category One (string) - Name of the category
+ (object)
+ test: aaaaa (string)
このように書くと以下のようにJSONのレスポンスに変換し、すぐに叩けるモックを用意してくれる。
{
"categories": [
{
"name": "Category One"
},
{
"test": "aaaaa"
}
]
}
- 同時にJSON Schemaにも変換してくれる。
{
"type": "object",
"properties": {
"categories": {
"type": "array"
}
},
"$schema": "http://json-schema.org/draft-04/schema#"
}
- Apiaryでの定義はそのままドキュメントになる。
- http://docs.ryosukehorie.apiary.io/#reference
- 実際にリクエストできるモック付きのドキュメント
短所
- API BlueprintのSyntaxの学習コスト
- 有料
参考
結論
- Apiaryが良さそう