📜  json-server - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:32:25.311000             🧑  作者: Mango

使用json-server快速模拟RESTful API

简介

在开发过程中,有时需要模拟一些API来测试前端界面或者进行后端接口测试,但是如果要手动编写一个完整的后端仍然是一件麻烦的事情。这时候可以使用json-server,它可以快速生成RESTful API,让我们可以更快地进行开发和测试。

安装

使用npm进行安装:

npm install -g json-server

安装后,我们就可以使用json-server命令了。

使用

json-server可以通过一个json文件来生成RESTful API。例如,我们有一个名为db.json的json文件,其中包含以下内容:

{
  "users": [
    { "id": 1, "name": "John" },
    { "id": 2, "name": "Jane" }
  ],
  "posts": [
    { "id": 1, "title": "json-server", "author": 1 },
    { "id": 2, "title": "Fake backend using json-server", "author": 2 }
  ]
}

我们可以在终端中输入以下命令来启动json-server:

json-server --watch db.json

这会自动启动一个RESTful API,可以通过http://localhost:3000来访问。而且我们的db.json中的数据都已经自动转化为了RESTful风格的API接口。

进阶用法
路由

json-server还支持路由配置,例如我们想让/users/:id中的:id匹配到db.json中的users数组下的id属性,而不是在根目录下:

json-server --watch db.json --routes routes.json

具体的routes.json文件内容如下:

{
  "/users/:id": "/users/:id",
  "/posts/:category": "/posts?category=:category",
  "/articles\\?id=:id": "/posts/:id"
}
自定义行为

json-server允许我们通过一个javascript文件来编写自定义行为,例如:

// db.js
module.exports = function () {
  const data = { users: [] }
  // ...
  return data
}

// routes.json
{
  "/api/*": "/$1",
  "/:resource/:id/show": "/:resource/:id"
}

// index.js
const jsonServer = require('json-server')
const server = jsonServer.create()
const router = jsonServer.router('db.js')
const middlewares = jsonServer.defaults()

server.use(middlewares)

//自定义路由
router.render = (req, res) => {
  // ...
}

server.use(router)
server.listen(3000, () => {
  console.log('json-server is running')
})
总结

json-server是一个非常方便和实用的工具,对于快速模拟RESTful API有很大的帮助。当然,它并不能像一个真正的后端服务器那样完整的处理数据,因此它只是用于测试和开发。