json-server:30 秒搭好一个全套 REST API

前端开发最烦的场景之一:后端接口还没写好,你就得先把页面调通。以前要么自己写一套 Mock 服务,要么对着空数据硬编。

json-server 解决的就是这个问题。给一个 JSON 文件,它 30 秒内就生成一整套 REST API,支持增删改查、分页、排序、条件过滤,甚至关联查询。目前 GitHub 上 7.5 万 Star。

正文顶部截图

用法就三步

装好之后,创建一个 db.json,写几个示例数据:

{
  "posts": [
    { "id": "1", "title": "a title", "views": 100 },
    { "id": "2", "title": "another title", "views": 200 }
  ],
  "comments": [
    { "id": "1", "text": "a comment about post 1", "postId": "1" }
  ],
  "profile": { "name": "typicode" }
}

然后一条命令启动:

npx json-server db.json

服务就在 http://localhost:3000 跑起来了。接着直接请求接口:

curl http://localhost:3000/posts/1

返回的就是 db.json 里的对应数据。不用写路由、不用写控制器、不用连数据库。

README区域截图

不只是简单的 CRUD

如果只是能增删改查,那跟直接读 JSON 文件没啥区别。json-server 真正管用的是它自带的查询能力。

字段条件过滤支持常见的比较操作,包括大于、小于、包含、字符串头尾匹配。比如查浏览量超过 100 的帖子,GET /posts?views:gt=100 就行。分页直接加 _page_per_page 参数,返回结果里自动带上前/后页链接和总页码。

关联数据也处理了。帖子下面有关联评论,用 _embed 参数就能一并查出来:GET /posts?_embed=comments。这个在原型开发时特别好用,前端可以按真实场景调接口,不用等后端把联表查询写出来。

删除资源时,可以用 _dependent 参数同时删除关联的子资源。比如 DELETE /posts/1?_dependent=comments 会删掉帖子 1 以及它下面所有评论。

静态文件也能托管

json-server 还会自动把 ./public 目录下的文件当静态资源服务。如果想挂更多目录,用 -s 参数添加就行。原型开发时,前端页面和后端 Mock 可以跑在同一个端口下,少配一层代理。

v1 版本的变化

当前 v1 版本是 beta,相比 v0 有几个调整。ID 统一为字符串,如果没传会自动生成。分页参数从 _limit 改成了 _per_page。关联查询统一用 _embed,不再支持 _expand。去掉了 --delay 参数,模拟慢请求改用浏览器 DevTools 的网络限速。

还有一点,json-server 也支持 JSON5 格式,字段名可以不加引号,末尾可以带逗号,写测试数据时少按几个键。

还有一点,json-server 也支持 JSON5 格式,字段名可以不加引号,末尾可以带逗号,写测试数据时少按几个键。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐