本文用的版本json-server@0.12.0,node 6.11.4
JSON-Server 是一个 Node 模块,运行 Express 服务器,你可以指定一个 json 文件作为 api 的数据源。
安装
首先你的电脑中需要安装nodejs,建议使用最新版本。然后全局安装json server。如果本地已经有了nodejs且不是最新的版本,则需要安装合适的版本。如果想查看合适的版本,可以参考npm 命令汇总npm view例子
npm install json-server -g
安装完成后可以用 json-server -h 命令检查是否安装成功,成功后会出现
json-server [options] <source>
选项:
--config, -c Path to config file [默认值: "json-server.json"]
--port, -p Set port [默认值: 3000]
--host, -H Set host [默认值: "0.0.0.0"]
运行
安装完成后,可以在任一目录下建立一个 xxx.json 文件,例如在 mock/ 文件夹下,建立一个 db.json 文件,并写入以下内容,并在 mock/ 文件夹下执行 json-server db.json -p 3003 。
{
"employees": [
{
"id": 1,
"name": "Pankaj",
"salary": "10000"
},
{
"name": "David",
"salary": "5000",
"id": 2
}
],
"student":
{
"id": 3,
"name": "Pankaj2",
"age": "10000"
}
]
}
D:\test1>json-server db.json -p 3004
\{^_^}/ hi!
Loading db.json
Done
Resources
http://localhost:3004/employees
Home
http://localhost:3004
GET
查看全部数据
http://localhost:3004/db
{
"employees": [
{
"id": 1,
"name": "Pankaj",
"salary": "10000"
},
{
"name": "David",
"salary": "5000",
"id": 2
}
]
....
}
查看所有的employees信息,端口号后接key即可
http://localhost:3004/employees
[
{
"id": 1,
"name": "Pankaj",
"salary": "10000"
},
{
"name": "David",
"salary": "5000",
"id": 2
}
]
根据ID查询指定的数据,限数组
http://localhost:3004/employees/1
{
"name": "Lisa",
"salary": 2000,
"id": 1
}
自定义路由
在同一文件夹下新建route.json:
{
"/api/*": "/$1" // /api/posts => /posts
}
上面route.json的意思就是,当调用/api/posts时,重定向到/posts。
命令行中输入如下命令即可实现简单的自定义路由, 路由文件通过–routes 参数来指定:
json-server --routes route.json db.json
对于路由的自定义配置json,github中也提供了一些其他的语法:
{
"/api/*": "/$1",
"/:resource/:id/show": "/:resource/:id",
"/posts/:category": "/posts?category=:category",
"/articles\\?id=:id": "/posts/:id"
}
作用如下:
/api/posts # → /posts
/api/posts/1 # → /posts/1
/posts/1/show # → /posts/1
/posts/javascript # → /posts?category=javascript
/articles?id=1 # → /posts/1
常见问题:
1.SyntaxError: Unexpected token in JSON at position 0
保证json文件的编码格式为UTF-8无bom格式
json-server db3.json --routes router.json -p 3004
Loading db3.json
Loading router.json
undefined:1
{
^
SyntaxError: Unexpected token in JSON at position 0