Today we will look into a very handy tool json-server, which can give you a mock rest json server in a minute.
今天,我们将研究一个非常方便的工具json-server,它可以在一分钟内为您提供一个模拟剩余的json服务器。
In a regular enterprise application, you work with many teams and third party APIs. Imagine you have to call a third party restful web service that will get you JSON data to work on. You are in a tight schedule, so you can’t wait for them to finish their work and then start your own. If you wish to have a mockup Rest Web service in place to get the demo data for you, then json-server is the tool you are looking for.
在常规企业应用程序中,您需要使用许多团队和第三方API。 假设您必须调用第三方静态Web服务 ,该服务将使您可以使用JSON数据。 您的时间安排很紧,所以您不能等他们完成工作然后再开始自己的工作。 如果您希望有一个原型Rest Web服务来为您获取演示数据,那么json-server是您要寻找的工具。
JSON服务器 (JSON Server)
JSON Server is a Node Module that you can use to create demo rest json webservice in less than a minute. All you need is a JSON file for sample data.
JSON Server是一个节点模块,可用于在不到一分钟的时间内创建演示剩余json网络服务。 您只需要一个JSON文件即可获取示例数据。
安装JSON服务器 (Installing JSON Server)
You should have NPM installed on your machine. If not, then refer this post to install NPM.
您应该在计算机上安装NPM。 如果没有,请参考这篇文章来安装NPM 。
Below shows the one liner command to install json-server
with output on my machine.
下面显示了一个在我的机器上安装json-server
及其输出的内衬命令。
$ npm install -g json-server
npm WARN deprecated graceful-fs@3.0.8: 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
- bytes@2.3.0 node_modules/json-server/node_modules/raw-body/node_modules/bytes
/usr/local/lib
└─┬ json-server@0.8.10
├─┬ body-parser@1.15.1
│ └── bytes@2.3.0
├─┬ compression@1.6.1
│ └── bytes@2.2.0
├─┬ lowdb@0.10.3
│ └─┬ steno@0.4.4
│ └── graceful-fs@4.1.4
├─┬ update-notifier@0.5.0
│ └─┬ configstore@1.4.0
│ ├── graceful-fs@4.1.4
│ └─┬ write-file-atomic@1.1.4
│ └── graceful-fs@4.1.4
└─┬ yargs@4.7.0
├─┬ pkg-conf@1.1.2
│ └─┬ load-json-file@1.1.0
│ └── graceful-fs@4.1.4
└─┬ read-pkg-up@1.0.1
└─┬ read-pkg@1.1.0
└─┬ path-type@1.1.0
└── graceful-fs@4.1.4
$
检查json服务器版本和选项 (Checking json-server version and options)
$ 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服务器 (Run JSON Server)
Now it’s time to start our json-server. Below is a sample file with my employees json data.
现在是时候启动我们的json服务器了。 以下是包含我的员工json数据的示例文件。
{
"employees": [
{
"id": 1,
"name": "Pankaj",
"salary": "10000"
},
{
"name": "David",
"salary": "5000",
"id": 2
}
]
}
Important point here is the name of array i.e employees. JSON server will create the REST APIs based on this. Let’s start our json-server with above file.
这里的重点是数组的名称,即employees。 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...
Don’t close this terminal, otherwise it will kill the json-server. Below are the sample CRUD requests and responses.
不要关闭此终端,否则它将杀死json-server。 以下是示例CRUD请求和响应。
JSON Server GET –阅读所有员工 (JSON Server GET – Read All Employees)
$ curl -X GET -H "Content-Type: application/json" "https://localhost:3000/employees"
[
{
"id": 1,
"name": "Pankaj",
"salary": "10000"
},
{
"name": "David",
"salary": "5000",
"id": 2
}
]
$
根据json-server的ID获取员工 (Get Employee based on ID from json-server)
$ curl -X GET -H "Content-Type: application/json" "https://localhost:3000/employees/1"
{
"id": 1,
"name": "Pankaj",
"salary": "10000"
}
$
JSON服务器POST-创建员工 (JSON Server POST – Create an Employee)
$ 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 –更新员工数据 (JSON Server PUT – Update Employee Data)
$ 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 –删除员工 (JSON Server DELETE – Delete an Employee)
$ 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": "Pankaj",
"salary": "10000"
},
{
"name": "Lisa",
"salary": 8000,
"id": 3
}
]
$
As you can see that with a simple JSON, json-server creates demo APIs for us to use. Note that all the PUT, POST, DELETE requests are getting saved into db.json
file.
如您所见,json-server通过简单的JSON创建了供我们使用的演示API。 请注意,所有的PUT,POST,DELETE请求都将保存到db.json
文件中。
Now the URIs for GET and DELETE are same, similarly it’s same for POST and PUT requests. Well, we can create our custom URIs too with a simple mapping file.
现在,GET和DELETE的URI相同,而POST和PUT请求的URI相同。 好了,我们也可以使用一个简单的映射文件来创建自定义URI。
json-server自定义路由 (json-server custom routes)
Create a file with custom routes for our json-server to use.
创建一个具有自定义路由的文件,供我们的json服务器使用。
routes.json
routes.json
{
"/employees/list": "/employees",
"/employees/get/:id": "/employees/:id",
"/employees/create": "/employees",
"/employees/update/:id": "/employees/:id",
"/employees/delete/:id": "/employees/:id"
}
We can also change the json-server port and simulate like a third party API, just change the base URL when the real service is ready and you will be good to go.
我们还可以更改json服务器端口并像第三方API一样进行仿真,只需在实际服务就绪时更改基本URL,您就可以使用了。
Now start the JSON server again as shown below.
现在,如下所示再次启动JSON服务器。
$ json-server --port 7000 --routes routes.json --watch db.json
(node:60899) fs: re-evaluating native module sources is not supported. 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...
It’s showing the custom routes defined by us.
它显示了我们定义的自定义路线。
具有自定义路由的json-server示例 (json-server example with custom routes)
Below is the example of some of the commands and their output with custom routes.
以下是一些命令及其带有自定义路由的输出示例。
$ curl -X GET -H "Content-Type: application/json" "https://localhost:7000/employees/list"
[
{
"id": 1,
"name": "Pankaj",
"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": "Pankaj",
"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": "Pankaj",
"salary": "10000"
},
{
"name": "Lisa",
"salary": 8000,
"id": 3
}
]
$
JSON server provides some other useful options such as sorting, searching and pagination. That’s all for json-server, it’s my go to tool whenever I need to create demo Rest JSON APIs.
JSON服务器提供了一些其他有用的选项,例如排序,搜索和分页。 这就是json服务器的全部内容,当我需要创建演示Rest JSON API时,这就是我要使用的工具。
Reference: json-server GitHub
参考 : json-server GitHub