本記事はKIT AppDeveloper Advent Calendar 2015の21日目の記事です。
APIの実装が追いついてなくてクライアント側が開発できない?
開発初期段階の場合だとよくあることだと思います。
APIの設計自体は全体通して済ませてあることが前提として必要ですが
レスポンスでどういうものが返ってくるか決まっているのであれば、APIのモックでダミーデータを返すことで、API実装が間に合っていなくともクライアントの開発を進めることができます。
また、クライアント側の開発によってAPI実装の修正が必要なときに、「このようなjsonのデータが欲しい」と伝えるのが簡単で分かりやすくなります。
APIのモックができたらいいこと
モックとはモックアップのことで、試作で作る模型のようなイメージです。
では、APIのモックとして何ができると嬉しいかというと最低でも下記のようなことができると、クライアント側の開発で利用することができると思います。
- URLにアクセスしてデータを返す。
- レスポンスを簡単に設計できる。
- GETでフィルターとかフィルターとかできると嬉しい!
- GETだけじゃなくてPOSTもできると嬉しい!!!
期待に答えてくれるAPIモックライブラリ json-server
なんと簡単にレスポンスの設計をできて、GETでフィルターやソートができて、POSTも出来ちゃうAPIのモック用のライブラリがあるんです!
npmでインストールするだけで使えます。
グローバルにインストールしたくない人は、各プロジェクトのフォルダなどにインストールしましょう。
npm install -g json-server
1.APIのモックサーバーを起動する
まず、db.json
のようなファイルを作成します。
{
"posts": [
{
"id": 1,
"title": "json-server",
"author": "typicode"
},
{
"id": 2,
"title": "hoge",
"author": "hogehoge"
}
],
"comments": [
{
"id": 1,
"body": "some comment",
"postId": 1
}
],
"profile": {
"name": "typicode"
}
}
そのファイルに対してjson-server -w db.json
するだけでダミーデータを返すAPIが出来ます。
$ json-server -w db.json
\{^_^}/ hi!
Loading db.json
Done
Resources
http://localhost:3000/posts
http://localhost:3000/comments
http://localhost:3000/profile
Home
http://localhost:3000
Type s + enter at any time to create a snapshot of the database
Watching...
2.APIのレスポンスを確認する
まずはGETを確認してみましょう。
$ curl -X GET "http://localhost:3000/posts"
[
{
"id": 1,
"title": "json-server",
"author": "typicode"
},
{
"id": 2,
"title": "hoge",
"author": "hogehoge"
}
]
$ curl -X GET "http://localhost:3000/comments"
[
{
"id": 1,
"body": "some comment",
"postId": 1
}
]
一つの要素だけ取得することも出来ます。
$ curl -X GET "http://localhost:3000/posts/1"
{
"id": 1,
"title": "json-server",
"author": "typicode"
}
では、フィルターやソートをかけてみましょう。
まずは、ソート(_sort=ソートしたいキー&_order=昇順or降順
)で指定できます。
$ curl -X GET "http://localhost:3000/posts?_sort=id&_order=DESC"
[
{
"id": 2,
"title": "hoge",
"author": "hogehoge"
},
{
"id": 1,
"title": "json-server",
"author": "typicode"
}
]
次に、フィルター(?フィルターしたいキー=フィルターしたい値&フィルターしたいキー=フィルターしたい値&...
)で指定できます。
$ curl -X GET "http://localhost:3000/posts?title=json-server"
[
{
"id": 1,
"title": "json-server",
"author": "typicode"
}
]
最後にPOST!!!
$ curl -X POST -d "id=3&title=fuga&author=fugauga" "http://localhost:3000/posts"
$ curl -X GET "http://localhost:3000/posts"
[
{
"id": 1,
"title": "json-server",
"author": "typicode"
},
{
"id": 2,
"title": "hoge",
"author": "hogehoge"
},
{
"id": 3,
"title": "fuga",
"author": "fugauga"
}
]
追加されてますね。
ファイルを確認すれば分かりますが、きっちり書き込まれています。
他にもhttp://localhost:3000
にアクセスすれば、現在の構成やdbの状態も見ることができます。
完璧ですね。
他にも色々機能があるので公式ページを確認して見てください。