JSON服务器(json-server)
今天,我们将研究一个非常方便的工具json-server,它可以在一分钟内为您提供一个模拟剩余的json服务器。
在常规企业应用程序中,您需要使用许多团队和第三方API。
想象一下,您必须调用第三方静态Web服务,该服务将使您可以使用JSON数据。
您的时间安排很紧,因此您不能等待他们完成工作然后再开始自己的工作。
如果您希望有一个样机Rest Web服务来为您获取演示数据,那么json-server是您正在寻找的工具。
JSON服务器
JSON Server是一个节点模块,可用于在不到一分钟的时间内创建演示剩余json网络服务。
您只需要一个JSON文件即可获取示例数据。
安装JSON服务器
您应该在计算机上安装NPM。
如果没有,请参考这篇文章以安装NPM。
下面显示了一个在我的机器上安装输出信息的" liner"命令。
$npm install -g json-server npm WARN deprecated [email protected]: graceful-fs v3.0.0 and before will fail on node releases >= v7.0. Please update to graceful-fs@^4.0.0 as soon as possible. Use 'npm ls graceful-fs' to find it in the tree. /usr/local/bin/json-server -> /usr/local/lib/node_modules/json-server/bin/index.js - [email protected] node_modules/json-server/node_modules/raw-body/node_modules/bytes /usr/local/lib └─┬ [email protected] ├─┬ [email protected] │ └── [email protected] ├─┬ [email protected] │ └── [email protected] ├─┬ [email protected] │ └─┬ [email protected] │ └── [email protected] ├─┬ [email protected] │ └─┬ [email protected] │ ├── [email protected] │ └─┬ [email protected] │ └── [email protected] └─┬ [email protected] ├─┬ [email protected] │ └─┬ [email protected] │ └── [email protected] └─┬ [email protected] └─┬ [email protected] └─┬ [email protected] └── [email protected] $
检查json服务器版本和选项
$json-server -v 0.8.10 $json-server -help /usr/local/bin/json-server [options] <source> Options: --config, -c Path to config file [default: "json-server.json"] --port, -p Set port [default: 3000] --host, -H Set host [default: "0.0.0.0"] --watch, -w Watch file(s) [boolean] --routes, -r Path to routes file --static, -s Set static files directory --read-only, --ro Allow only GET requests [boolean] --no-cors, --nc Disable Cross-Origin Resource Sharing [boolean] --no-gzip, --ng Disable GZIP Content-Encoding [boolean] --snapshots, -S Set snapshots directory [default: "."] --delay, -d Add delay to responses (ms) --id, -i Set database id property (e.g. _id) [default: "id"] --quiet, -q Suppress log messages from output [boolean] $
运行JSON服务器
现在是时候启动我们的json服务器了。
以下是包含我的员工json数据的示例文件。
{
"employees": [
{
"id": 1,
"name": "hyman",
"salary": "10000"
},
{
"name": "David",
"salary": "5000",
"id": 2
}
]
}
这里的重点是数组即员工的名称。
JSON服务器将基于此创建REST API。
让我们用上述文件启动json服务器。
$json-server --watch db.json
\{^_^}/hi!
Loading db.json
Done
Resources
https://localhost:3000/employees
Home
https://localhost:3000
Type s + enter at any time to create a snapshot of the database
Watching...
不要关闭此终端,否则它将杀死json-server。
以下是示例CRUD请求和响应。
JSON Server GET –阅读所有员工
$curl -X GET -H "Content-Type: application/json" "https://localhost:3000/employees"
[
{
"id": 1,
"name": "hyman",
"salary": "10000"
},
{
"name": "David",
"salary": "5000",
"id": 2
}
]
$
根据json-server的ID获取员工
$curl -X GET -H "Content-Type: application/json" "https://localhost:3000/employees/1"
{
"id": 1,
"name": "hyman",
"salary": "10000"
}
$
JSON服务器POST –创建员工
$curl -X POST -H "Content-Type: application/json" -d '{"name": "Lisa","salary": "2000"}' "https://localhost:3000/employees"
{
"name": "Lisa",
"salary": 2000,
"id": 3
}
$
JSON Server PUT –更新员工数据
$curl -XPUT -H "Content-Type: application/json" -d '{"name": "Lisa", "salary": "8000"}' "https://localhost:3000/employees/3"
{
"name": "Lisa",
"salary": 8000,
"id": 3
}
$
JSON服务器DELETE –删除员工
$curl -X DELETE -H "Content-Type: application/json" "https://localhost:3000/employees/2"
{}
$curl -GET -H "Content-Type: application/json" "https://localhost:3000/employees"
[
{
"id": 1,
"name": "hyman",
"salary": "10000"
},
{
"name": "Lisa",
"salary": 8000,
"id": 3
}
]
$
如您所见,json-server通过简单的JSON创建了供我们使用的演示API。
请注意,所有的PUT,POST,DELETE请求都将保存到db.json文件中。
现在,GET和DELETE的URI相同,而POST和PUT请求的URI相同。
好了,我们也可以使用简单的映射文件来创建自定义URI。
json-server自定义路由
创建一个具有自定义路由的文件,供我们的json服务器使用。
routes.json
{
"/employees/list": "/employees",
"/employees/get/:id": "/employees/:id",
"/employees/create": "/employees",
"/employees/update/:id": "/employees/:id",
"/employees/delete/:id": "/employees/:id"
}
我们还可以更改json服务器端口并像第三方API一样进行仿真,只需在实际服务就绪时更改基本URL,您就可以使用了。
现在,如下所示再次启动JSON服务器。
$json-server --port 7000 --routes routes.json --watch db.json
(node:60899) fs: re-evaluating native module sources is 不支持. If you are using the graceful-fs module, please update it to a more recent version.
\{^_^}/hi!
Loading db.json
Loading routes.json
Done
Resources
https://localhost:7000/employees
Other routes
/employees/list -> /employees
/employees/get/:id -> /employees/:id
/employees/create -> /employees
/employees/update/:id -> /employees/:id
/employees/delete/:id -> /employees/:id
Home
https://localhost:7000
Type s + enter at any time to create a snapshot of the database
Watching...
它显示了我们定义的自定义路线。
具有自定义路由的json-server示例
以下是一些命令及其自定义路由输出示例。
$curl -X GET -H "Content-Type: application/json" "https://localhost:7000/employees/list"
[
{
"id": 1,
"name": "hyman",
"salary": "10000"
},
{
"name": "Lisa",
"salary": 8000,
"id": 3
}
]
$curl -X GET -H "Content-Type: application/json" "https://localhost:7000/employees/get/1"
{
"id": 1,
"name": "hyman",
"salary": "10000"
}
$curl -X POST -H "Content-Type: application/json" -d '{"name": "Lisa","salary": "2000"}' "https://localhost:7000/employees/create"
{
"name": "Lisa",
"salary": 2000,
"id": 4
}
$curl -XPUT -H "Content-Type: application/json" -d '{"name": "Lisa", "salary": "8000"}' "https://localhost:7000/emloyees/update/4"
{
"name": "Lisa",
"salary": 8000,
"id": 4
}
$curl -XDELETE -H "Content-Type: application/json" "https://localhost:7000/employees/delete/4"
{}
$curl -GET -H "Content-Type: application/json" "https://localhost:7000/employees/list"
[
{
"id": 1,
"name": "hyman",
"salary": "10000"
},
{
"name": "Lisa",
"salary": 8000,
"id": 3
}
]
$
JSON服务器提供了其他一些有用的选项,例如排序,搜索和分页。

