前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >『前端必备』本地数据接口 —— json-server 从入门到膨胀

『前端必备』本地数据接口 —— json-server 从入门到膨胀

作者头像
德育处主任
发布于 2022-04-17 04:11:06
发布于 2022-04-17 04:11:06
5K02
代码可运行
举报
运行总次数:2
代码可运行

前言

Ajax 是前端必学的一个知识点,但刚接触 Ajax 的同学可能会因为没接口测试而烦恼。

本文 入门篇 会花你10分钟解决 没接口测试 这个烦恼,而且不需要你具备后端知识。

如果不想自己在本地搭环境,还可以使用 《前端需要的免费在线api接口》 里推荐的几个线上接口平台,里面包括常用的 json 结构数据和图片。

虽然有线上的免费接口可以测试,但需要自定义接口和数据的时候,还是本地模拟数据比较适合前端开发者。

本文分 入门篇进阶篇。再往下滑一点就能看到全文目录。

入门篇: 5分钟内带你实现 本地环境搭建增删改查 操作,满足入门测试使用。

进阶篇: 主要讲解常用的 查询操作,除此之外还包括 常规配置、静态资源配置 等知识点。这部分有点长,建议收藏

本文约定

  1. 本文主要面向的读者是 前端小白,几乎不会涉及到后端知识,所以并不打算讲解 json-server 中间件 的内容。
  2. 本文讲到的所有知识点都会提供对应的代码展示(会比官方文档详细点)。
  3. 本文使用 postman 测试,希望能照顾到使用不同工具库做数据请求的读者(我知道还有只懂 jQuery 的开发者)。
  4. 特殊情况会使用 axios 配合演示。

点赞 + 收藏 = 学会了

目录

入门

json-server简介

npm地址 | github地址

Get a full fake REST API with zero coding in less than 30 seconds (seriously)

引用了官方的一句话,大概意思是30秒就能获得一套完整的模拟 REST API 接口。

使用 json-server 需要遵守一定的规范。

  • 数据查询要使用 GET
  • 新增数据要使用 POST
  • 删除数据要使用 DELETE
  • 修改数据使用 PUTPATCH

其他啰嗦的介绍可以打开上面提供的网址看看。

30秒起步

30秒起步分 4 步完成:

  1. node 环境安装
  2. 安装 json-server
  3. 创建数据库(其实就是一个 json 文件)
  4. 启动服务

1. node 环境安装

json-server 需要通过 npm 下载,npm 依赖在 node 中。

node 常见的安装方法有2种。第一种是官方下载,第二种是使用 nvm 下载。自己选一种就行。

node 官网,点击进入主页下载,下载完狂按“下一步”和“完成”就行了。

注意: node 版本一定要 12 以上。不然会报以下错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
json-server requires at least version 12 of Node, please upgrade

2. 安装 json-server

可以全局安装,也可以在某项目里安装。这里建议全局安装,因为以后你可能会对 json-server 产生依赖。

全局安装方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install -g json-server

3. 创建数据库

在你本机创建一个文件夹,然后新建一个 json 文件,再填入数据即可。

建议文件名不要出现中文。

例:

创建 json-server-demo 文件夹,在 json-server-demo 里创建 db.json 文件(这些文件夹和文件名都可以自由命名)。

db.json 文件录入以下数据(数据来自 json-server 官方文档,你也可以使用自己的数据)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "posts": [
    {
      "id": 1,
      "title": "json-server",
      "author": "typicode"
    }
  ],
  "comments": [
    {
      "id": 1,
      "body": "some comment",
      "postId": 1
    }
  ],
  "profile": {
    "name": "typicode"
  }
}

4. 启动服务

进入 json-server-demo 目录,打开终端输入以下命令即可

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
json-server --watch db.json

首页和三个接口都可以直接在浏览器访问,自己打开试试吧。

搞掂!

查(get)

json-server 查询数据需要使用 GET 方法。

入门篇 只写一种查询方法,其他查询操作请往下滑,看 进阶篇

上一小节创建了3个接口,我们可以直接在浏览器、postman或者自己写JS代码获取数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/posts

http://localhost:3000/commentshttp://localhost:3000/profile 两个接口可以自己尝试,这里不再啰嗦。

增(post)

json-server 新增数据需要使用 POST 方法。

例:给 posts 添加一条新的数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/posts

这里使用 POSt 方法向 /posts 接口传输数据,/posts 原本的数据结构是包含 id、title、author 三个字段,id 默认是自增主键,不传的话会默认增加。

此时打开 db.json 文件看看,可以发现 posts 里多了一条数据。

需要注意的是:json-server 默认情况下并不会限制你上传的数据格式和类型,所以需要你严格遵循自己设计的数据格式来添加和修改。

删(delete)

json-server 删除数据需要使用 DELETE 方法。

删除的公式是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/{接口名}/{id}

比如现在要删除刚刚上传的那条数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "title": "leihou",
  "author": "雷猴",
  "id": 2
}

可以看到刚刚上传的那条数据的 id 为 2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/posts/2

此时打开 db.json 就会发现刚刚删除的那条数据已经没了。

需要注意的是: 删除成功 Status 会返回 200;如果删除的数据不存在会返回 404

我用 axios 模拟了一下。

删除成功返回的结果:

删除失败返回的结果:

改(put 和 patch)

修改数据分为2个方法:

  • put :覆盖
  • patch :更新

公式如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/posts/{id}

覆盖(put)

例:把 id1 的数据改成 { "title": "leihou", "author": "雷猴" }

此时打开 db.json 就可以看到 id1 的数据已经发生变化。

注意:原本的数据包含 titleauthor ,使用 put 时必须把这两个字段都写上,不然会删掉没传的字段。这就是 “覆盖” 的意思。

例如:

此时查看 db.json 会发现数据被覆盖了

更新(patch)

先还原一下数据,改成如下图所示:

此时有 titleauthor 字段。

例:使用 patch 方法把 id1 的数据 title 字段的值更改成 hello

打开 db.json 文件查看一下,会发现只改了 id1title 值,并没有删掉 author 这个字段的数据。

进阶

启动参数

我们之前使用 json-server --watch db.json 这条命令启动了接口项目,其中 json-server 是服务启动的命令,--watch 是参数,db.json 是目标文件。

使用下面这条命令可以 查看配置项:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
json-server --help

# 或使用简写方式
json-server -h

参数

简写

说明

--config

-c

指定配置文件

--port

-p

端口号

--host

-H

主机地址

--watch

-w

监听文件

--routes

-r

指定路由文件

--middlewares

-m

指定中间件

--static

-s

设置静态文件

--read-only

--ro

只读

--no-cors

--nc

禁用跨源资源共享

--no-gzip

--ng

禁止GZIP

--snapshots

-S

设置快照目录

--delay

-d

设置反馈延时(ms)

--id

-i

设置数据的id属性(e.g. _id)

--foreignKeySuffix

--fks

设置外键后缀(如post_id中的_id)

--quiet

-q

禁止输出日志消息

--help

-h

显示帮助信息

--version

-v

显示版本号

配置

使用 json-server --help 可以查看到所有配置项。接下来我演示几个常见的配置操作。

端口

使用 -p 或者 --port 配置端口号,例如配置 6666 端口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
json-server -p 6666 db.json

启动后

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\{^_^}/ hi!

Loading db.json
Done

Resources
http://localhost:6666/posts
http://localhost:6666/comments
http://localhost:6666/profile

Home
http://localhost:6666

主机地址

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
json-server --host 0.0.0.0 db.json

这里设置了 0.0.0.0 ,之后通过本机 IP 来访问即可。同一个局域网内的其他设备也可以通过这个地址来访问。

查询的常用操作

查询是日常项目中接触最多的操作,所以查询是重点。

普通查询

30秒起步 的那份数据。

查询 /posts 所有数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://0.0.0.0:3000/posts

查询 /comments 所有数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 http://localhost:3000/comments

查询 /profile 所有数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/profile

id查询

db.json 的内容修改一下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "posts": [
    {
      "id": 1,
      "title": "文章111",
      "author": "张三"
    },
    {
      "id": 2,
      "title": "文章222",
      "author": "李四"
    }
  ]
}

此时只有 posts 接口,里面有2条数据,id 分别为 12

查询的公式是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/posts/{id}

查询 id2 的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/posts/2

条件查询

准备以下数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "posts": [
    {
      "id": 1,
      "title": "文章111",
      "author": "张三"
    },
    {
      "id": 2,
      "title": "文章222",
      "author": "李四"
    },
    {
      "id": 3,
      "title": "文章333",
      "author": "张三"
    }
  ]
}

可以看到里面有 2条张三 的数据,1条李四 的数据。

单一条件查询

查找 author张三 的所有数据。

查询 author张三 的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/posts?author=张三

http://localhost:3000/posts 后面加一个 ? ,然后写上筛选条件即可。

多条件查询(且)

上面的数据,有2条张三的。

这次要筛选的是 author = 张三title = 文章333 的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/posts?author=张三&title=文章333

符合条件赛选的时候,使用 & 号添加条件。

多条件查询(或)

这次要筛选的是 title = 222title = 333 这两条数据出来。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/posts?title=文章222&title=文章333

重复使用 title ,会把符合条件的都筛查出来。

当然,我们还可以使用 模糊查询 来达到类似的效果,稍后会讲到。

深度属性查询

这里需要准备另一份数据才能展示这个知识点。

数据内容如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "posts": [
    {
      "id": 1,
      "title": "文章111",
      "authorInfo": {
        "name": "张三",
        "age": 20
      }
    },
    {
      "id": 2,
      "title": "文章222",
      "authorInfo": {
        "name": "李四",
        "age": 24
      }
    }
  ]
}

可以看到 authorInfo 里面还有子属性。

查询 authorInfo.name = 张三 的数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/posts?authorInfo.name=张三

这里需要使用 . 的方式来访问子级数据,有点像 js 用点语法访问对象属性那样。

工作中我遇到这样的接口不多。

分页查询

使用 _page_limit(可选) 对数据进行分页。需要注意,_page_limit 前面都要有下划线

  • _page:页码
  • _limit:每页的数据量

修改 db.json 里的数据方便测试分页功能,如下所示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "comments": [
    { "id": 1, "body": "some comment 1", "postId": 1 },
    { "id": 2, "body": "some comment 2", "postId": 1 },
    { "id": 3, "body": "some comment 3", "postId": 2 },
    { "id": 4, "body": "some comment 4", "postId": 3 },
    { "id": 5, "body": "some comment 5", "postId": 1 },
    { "id": 6, "body": "some comment 6", "postId": 3 },
    { "id": 7, "body": "some comment 7", "postId": 3 },
    { "id": 8, "body": "some comment 8", "postId": 1 },
    { "id": 9, "body": "some comment 9", "postId": 2 },
    { "id": 10, "body": "some comment 10", "postId": 2 },
    { "id": 11, "body": "some comment 11", "postId": 3 },
    { "id": 12, "body": "some comment 11", "postId": 1 }
  ]
}

准备了12条数据。

需要获取第2页的数据,每页3条:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/comments?_page=2&_limit=3

除了要返回的数据外,还会在 Headers 里返回 总数;第一个、前一个、下一个、最后一个的链接。我用 axios 发个请求演示一下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
axios.get('http://localhost:3000/comments', {
  params: {
   _page: 2,
   _limit: 3
  }
})
  .then(res => {
    console.log(res)
  })
  .catch(err => {
    console.error(err)
  })

返回结果如下所示

x-total-count 存放总数

link 字段里存放的是 第一个、前一个、下一个、最后一个 的链接地址

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
"
<http://localhost:3000/comments?_page=1&_limit=3>; rel=\"first\", <http://localhost:3000/comments?_page=1&_limit=3>; rel=\"prev\", <http://localhost:3000/comments?_page=3&_limit=3>; rel=\"next\", <http://localhost:3000/comments?_page=4&_limit=3>; rel=\"last\"
"

排序查询

需要添加 **排序的标记 ( _sort )**,然后设置 **排序规则 ( _order )**。

其中,排序规则有 升序 ( asc )降序 ( desc )

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/{接口名}?_sort=要排序的字段名&_order=排序规则

以这份数据为例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "comments": [
    { "id": 11, "body": "some comment 1", "postId": 1 },
    { "id": 2, "body": "some comment 2", "postId": 1 },
    { "id": 3, "body": "some comment 3", "postId": 2 },
    { "id": 10, "body": "some comment 4", "postId": 3 },
    { "id": 7, "body": "some comment 5", "postId": 1 },
    { "id": 6, "body": "some comment 6", "postId": 3 },
    { "id": 5, "body": "some comment 7", "postId": 3 },
    { "id": 8, "body": "some comment 8", "postId": 1 },
    { "id": 9, "body": "some comment 9", "postId": 2 },
    { "id": 4, "body": "some comment 10", "postId": 2 },
    { "id": 1, "body": "some comment 11", "postId": 3 },
    { "id": 12, "body": "some comment 11", "postId": 1 }
  ]
}

id 的排序是乱的,如果使用普通的方式请求回来的数据是原模原样返回的。

升序

id 为参考字段进行升序排列返回给客户端。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/comments?_sort=id

或
http://localhost:3000/comments?_sort=id&_order=asc

返回的结果就会以 id 为参考字段升序排好。

普通升序排列的话,_order=asc 可以不传。只需指定 参考字段 ( _sort ) 即可。

降序

降序必须填好 _order=desc

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/comments?_sort=id&_order=desc
多字段排序

这次的需求是:

  1. 首先按 postId 升序排列
  2. 1 的基础上再对 id 进行倒序排列

多个字段用 , 分格。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/comments?_sort=postId,id&_order=asc,desc

返回结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "comments": [
    { "id": 12, "body": "some comment 11", "postId": 1 },
    { "id": 11, "body": "some comment 1", "postId": 1 },
    { "id": 8, "body": "some comment 8", "postId": 1 },
    { "id": 7, "body": "some comment 5", "postId": 1 },
    { "id": 2, "body": "some comment 2", "postId": 1 },
    { "id": 9, "body": "some comment 9", "postId": 2 },
    { "id": 4, "body": "some comment 10", "postId": 2 },
    { "id": 3, "body": "some comment 3", "postId": 2 },
    { "id": 10, "body": "some comment 4", "postId": 3 },
    { "id": 6, "body": "some comment 6", "postId": 3 },
    { "id": 5, "body": "some comment 7", "postId": 3 },
    { "id": 1, "body": "some comment 11", "postId": 3 }
  ]
}

符合需求。

切片查询

切片的意思是指定 ;也可以指定 片段长度

用到的关键字有:

  • _start:开始位置(下标,从0开始)
  • _end:结束位置
  • _limit:片段长度

总数 会放在 headers 里。

以这份数据为例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "comments": [
    { "id": 1, "body": "some comment 1", "postId": 1 },
    { "id": 2, "body": "some comment 2", "postId": 1 },
    { "id": 3, "body": "some comment 3", "postId": 2 },
    { "id": 4, "body": "some comment 4", "postId": 3 },
    { "id": 5, "body": "some comment 5", "postId": 1 },
    { "id": 6, "body": "some comment 6", "postId": 3 },
    { "id": 7, "body": "some comment 7", "postId": 3 },
    { "id": 8, "body": "some comment 8", "postId": 1 },
    { "id": 9, "body": "some comment 9", "postId": 2 },
    { "id": 10, "body": "some comment 10", "postId": 2 },
    { "id": 11, "body": "some comment 11", "postId": 3 },
    { "id": 12, "body": "some comment 11", "postId": 1 }
  ]
}

需求:返回下标从 2-6 的数据

使用 _start_end 的方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/comments?_start=2&_end=6

使用 _start_limit 的方式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/comments?_start=2&_limit=4

范围查询

范围查询包括 大于等于小于等于不等于 三种情况。

大于等于 _get

大于等于 使用的关键字是 _get 。注意,前面有个下划线的。

需求:查询 comments 接口 id 大于等于 4 的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/comments?id_gte=4
小于等于 _lte

需求:查询 comments 接口 id 小于等于 4 的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/comments?id_lte=4

联合一起使用

需求:查询 comments 接口 id 大于等于 4 且 小于等于 6 的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/comments?id_gte=4&id_lte=6
不等于 _ne

需求:查询 comments 接口 id 不等于 2 的数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/comments?id_ne=2

模糊查询

模糊查询的关键字是 _like

需求:查询 comments 接口 body 包含 1 的数据

全文查询

全文查询的关键字是 q

准备以下数据比较好演示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "authors": [
    { "id": 1, "name": "zhangsan", "age": 18},
    { "id": 2, "name": "lisi", "age": 21},
    { "id": 3, "name": "wangwu", "age": 24}
  ]
}

查询所有字段中包含 2 的数据出来

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/authors?q=2

因为 id3 的那条数据里 age24 ,也算是包含了 2

外键关联查询

外键查询需要 2个接口 关联查询。

准备以下数据方便演示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "posts": [
    { "id": 1, "title": "文章111", "author": "张三" },
    { "id": 2, "title": "文章222", "author": "李四" }
  ],
  "comments": [
    { "id": 1, "body": "some comment 1", "postId": 1 },
    { "id": 2, "body": "some comment 2", "postId": 1 },
    { "id": 3, "body": "some comment 3", "postId": 2 }
  ]
}

posts 里有2条数据。

comments 里有3条数据,其中每条数据都有一个 postId,是对应 posts 每条数据的 id

需求:查询 postsid1 的所有 comments 内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/posts/1/comments

关系拼装

关系拼装可以把关联的2个接口的数据拼接起来并返回。

其中有2种查询关系:

  • 包含子资源 _embed
  • 包含父资源 _expand

准备以下数据方便演示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "posts": [
    { "id": 1, "title": "文章111", "author": "张三" },
    { "id": 2, "title": "文章222", "author": "李四" }
  ],
  "comments": [
    { "id": 1, "body": "some comment 1", "postId": 1 },
    { "id": 2, "body": "some comment 2", "postId": 1 },
    { "id": 3, "body": "some comment 3", "postId": 2 }
  ]
}
包含子资源 _embed
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/posts?_embed=comments

还可以拼接多个条件。

需求:在 comments 里,把 postsid2 的数据找出来并拼接起来

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/posts/2?_embed=comments
包含父资源 _expand
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/comments?_expand=post

配置路由

有时候我们的 api地址 可能不像上面所有案例中那么简单,此时就可以使用 自定义路由 的方法来模拟。

比如模拟下面这个接口:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/api/users/1

实现的步骤如下所示:

  1. 创建 routes.json 文件(也可以不叫这个名字)
  2. 启动服务时使用 --routes 参数

1、创建 routes.json ,并输入以下内容。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "/api/*": "/$1"
}

2、启动服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
json-server db.json --routes routes.json

3、访问

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://localhost:3000/api/posts

静态资源

静态资源包含 htmlcssjs 、图片、视频等资源。

配置

配置方式分2种:

  • 默认配置
  • 指定资源位置
默认配置

需要在根目录下创建 public 文件夹,里面放入 html 等文件。

然后在浏览器访问一下 http://localhost:3000/

你也可以加入自己的 cssjs 进行设计交互。

指定资源位置

json-server 配资静态资源的默认方式是在根目录下创建 public 文件夹,然后里面放入静态资源。

但如果你不想使用 public 作为静态资源的文件夹,也可以自己起过另一个名字,然后在启动环境时使用 --static 来指定目标目录就行了。

比如我创建了一个 some-other-dir 作为静态资源的目录,使用以下命令指定以下即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
json-server db.json --static ./some-other-dir

多媒体资源

除了放 htmlcssjs 资源外,还可以放图片和视频。

我以图片为例,我在 public 目录下添加一个图片

直接在 http://localhost:3000/ 后面跟着 图片文件名 即可。

其他

生成动态数据

如果我们要模拟100条数据,甚至更多的话,创建 json 文件然后一条一条录入的方式真的很不合时。

此时我们可以使用 js 通过循环的方式来实现数据创建。

1、首先在根目录下创建一个 db.js 的文件。

2、输入一下内容

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = () => {
  const data = { users: [] }
  // 创建 100 个 users
  for (let i = 0; i < 100; i++) {
    data.users.push({ id: i, name: `user${i}` })
  }
  return data
}

3、运行 js 文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
json-server db.js

4、查询一下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 http://localhost:3000/users

100条数据就直接生成了。

需要什么字段可以自己在 js 文件里配置。

查询整个数据库

访问以下地址可以获得整个数据库的数据。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 http://localhost:3000/db

远程模式

如果想使用互联网上的数据,也可以直接运行 json-server 然后加上远端的地址即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
json-server http://jsonplaceholder.typicode.com/db

如果本文能给您带来帮助,请帮我 点个赞 呗~

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/12/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
JSON-Server 极速入门教程
JSON-Server 是一个零代码的 REST API 模拟工具,它可以在不到 30 秒的时间内为你创建一个完整的假 REST API。它非常适合前端开发者在没有后端支持的情况下进行开发和测试。
万少
2025/04/13
1620
接口Mock利器——Json Server
Mock在中文的含义就是模拟的意思,mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。
清风穆云
2021/08/09
1.8K0
vue 开发常用工具及配置四:推荐一个 mock 工具
在系统原型设计阶段,或后端接口不足备的情况下,如何验证模型信息的完整性?此时 mock 是一个不错的选择。
LIYI
2020/01/14
7460
vue 开发常用工具及配置四:推荐一个 mock 工具
json-server : 前端工程师的小伙伴!
你是否曾为了前端开发需要依赖后端接口而烦恼?是否曾因接口未开发完成而垂头丧气?是否曾梦想能自己制作一个玩具服务器,随心所欲地调试接口?
HelloWorldZ
2024/03/20
1220
json-server : 前端工程师的小伙伴!
自从用了这个 69k star 的项目,前端小姐姐再也不催我了
最近公众号又改版了,开源老铁们一定星标一下 开源小分队,不然后续真的会失联~星标方式就放在下方了。
永恒君
2023/11/20
1540
自从用了这个 69k star 的项目,前端小姐姐再也不催我了
mockjs,json-server一起搭建前端通用的数据模拟框架
     无论是在工作,还是在业余时间做前端开发的时候,难免出现后端团队还没完成接口的开发,而前端团队却需要实现对应的功能,不要问为什么,这是肯定存在的。本篇文章就是基于此原因而产出的。希望对有这方面的需求的同志有所帮助。 一、使用的组件包 1. mockjs:用于模拟查询结果 2. json-server:搭建模拟服务器,以及模拟CRUD的相关操作接口 二、具体的实现 1. 建立项目,并安装相应的依赖 cnpm install --save-dev mockjs json-server 上述命令为安装依赖
sam dragon
2018/01/17
1.9K0
mockjs,json-server一起搭建前端通用的数据模拟框架
Github上基于lodash和lowdb json查询服务器json-server
Github上基于lodash和lowdb json查询服务器json-server
MiaoGIS
2019/03/01
2K0
Github上基于lodash和lowdb json查询服务器json-server
前端基础-json-server与axios
一个项目从立项开始,一般都是前后端同时进行编码工作的,而此时前端需要的接口和数据后台都是无法提供的;
cwl_java
2020/03/26
9350
json-server增删改查
npm install json-server -g或cnpm install json-server -g
RtyXmd
2018/08/30
2.9K0
json-server增删改查
上手玩一下 json-server(一)了解篇
既然是造数据,就需要创建一个json数据。 在任意一个文件夹下(此处假设我创建了一个myserver文件夹),进入到该文件夹里面,执行代码:
celineWong7
2020/11/05
2.5K0
【axios】使用json-server 搭建REST API
1.1 API 的分类 REST API: restful (Representational State Transfer (资源)表现层状态转化) (1) 发送请求进行CRUD 哪个操作由请求方式来决定 (2) 同一个请求路径可以进行多个操作 (3) 请求方式会用到GET/POST/PUT/DELETE 非REST API: restless (1) 请求方式不决定请求的CRUD 操作 (2) 一个请求路径只对应一个操作 (3) 一般只有GET/POST 1.2 使用json-server 搭建RES
玖柒的小窝
2021/10/05
3.1K0
【axios】使用json-server 搭建REST API
json-server搭建mock服务
前后端分离开发是当前大多数公司的一种模式,这样让开发者更加专注于某一方向。但是在实际的工作中,很容易出现前端后端互等的情况,一方面不利于沟通,另一方面降低了开发效率。在很多公司的业务都是前端驱动的,所以前端人员可以根据业务先定义数据结构先行开发。本文基于json-server搭建一个mock接口。
牛老师讲GIS
2022/09/27
4740
json-server搭建mock服务
前端必备技能:json-server全攻略
由于json-server需要通过Node对其进行启动,所以首先要安装Node。Node可自行安装,在此不再进行演示。
用户1272076
2020/08/28
1.7K0
json-server
在前端与后端开发的时候,偶尔会有在后端接口没有开发完毕时进行一些接口的mock,这里有一款开源框架做了类似的事情,让你可以“不到30秒得到一个零编码的假REST API”
阿超
2023/06/23
1960
json-server
使用json-server快速搭建本地数据接口
官方网站:https://github.com/typicode/json-server
lyudev
2022/08/04
6230
json-server模拟后端接口
作为一个前端,在实现项目功能的时候,需要在前端写一个静态的json数据,进行测试,但是有的时候,需要涉及到全模拟请求以及请求回来的过程,实现动态增删改查,这个时候就需要使用到web的API接口神器json-server。
王小婷
2019/11/20
1.5K0
json-server对数据进行增删改查操作
在上一节里面,成功获取json-server模拟后端接口 准备工作,先打开cmd,运行以上文章里内容:
王小婷
2019/11/20
1.7K0
使用json-Server快速模拟服务环境搭建
在前后端分离的这种工作模式下,分工明确,各司其职。前端负责展示数据,后端提供数据。然而,在这种过程中对于接口的规范 需要提前制定好。例如根据规范提前模拟数据,这个时候就比较麻烦的。JsonServer这个比较NB了,它可以快速搭建服务端环境,创建json文件,便于调用。然后可以通过下载postman与json-server结合,可以实现数据的增删改查功能。下面是使用过程:
小周sir
2019/09/23
1.3K0
使用json-Server快速模拟服务环境搭建
json-server进阶
现在访问http://localhost:3000/list会看到动态生成了1000条数据,这跟咱们手动在json文件里写1000条数据效果一样,但肯定没有这么方便。还好json-server支持使用js动态生成的json格式数据。
游魂
2018/07/20
1.3K1
json-server进阶
上手玩一下json-server(二)操作数据篇——POST/PATCH/DELETE
在上一篇中,我们有db.json文件,里面放置了一些水果信息。 现在新建一个demo文件夹,引入jq库文件(常见的是jquery-2.0.3.min.js,此处的jq.js是被我重命名了)。 另,新建一个jq-ajax.html文件,我们将在这个html文件里头操作db.json数据。
celineWong7
2020/11/05
1.8K0
相关推荐
JSON-Server 极速入门教程
更多 >
LV.0
打杂
目录
  • 前言
  • 入门
    • json-server简介
    • 30秒起步
    • 查(get)
    • 增(post)
    • 删(delete)
    • 改(put 和 patch)
  • 进阶
    • 启动参数
    • 配置
      • 端口
      • 主机地址
    • 查询的常用操作
      • 普通查询
      • id查询
      • 条件查询
      • 分页查询
      • 排序查询
      • 切片查询
      • 范围查询
      • 模糊查询
      • 全文查询
      • 外键关联查询
      • 关系拼装
      • 配置路由
    • 静态资源
      • 配置
      • 多媒体资源
    • 其他
      • 生成动态数据
      • 查询整个数据库
      • 远程模式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档