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 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文件即可获取示例数据。
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 [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-server -v
0.8.10
$ json-server -help
/usr/local/bin/json-server [options]
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请求和响应。
$ curl -X GET -H "Content-Type: application/json" "https://localhost:3000/employees"
[
{
"id": 1,
"name": "Pankaj",
"salary": "10000"
},
{
"name": "David",
"salary": "5000",
"id": 2
}
]
$
$ curl -X GET -H "Content-Type: application/json" "https://localhost:3000/employees/1"
{
"id": 1,
"name": "Pankaj",
"salary": "10000"
}
$
$ curl -X POST -H "Content-Type: application/json" -d '{"name": "Lisa","salary": "2000"}' "https://localhost:3000/employees"
{
"name": "Lisa",
"salary": 2000,
"id": 3
}
$
$ curl -XPUT -H "Content-Type: application/json" -d '{"name": "Lisa", "salary": "8000"}' "https://localhost:3000/employees/3"
{
"name": "Lisa",
"salary": 8000,
"id": 3
}
$
$ 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。
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.
它显示了我们定义的自定义路线。
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
翻译自: https://www.journaldev.com/10660/json-server