json-server+mockjs 模拟REST接口

Mockjs实战:构建高可信前端假数据高速公路 Mockjs是一种轻量级前端数据模拟工具,其核心价值在于解决前后端并行开发中的接口契约缺失问题。它通过声明式规则引擎动态生成符合业务语义的JSON数据,支持字段类型校验、嵌套结构、响应延迟与错误率配置,从而在无真实后端服务时支撑完整前端流程。相比静态JSON或简单占位符,Mockjs具备语义化生成、关联性构造、条件分支等能力,显著提升接口联调效率与异常覆盖能力。在电商、后台管理系统等需要快速迭代的项目中,合理使用Mockjs可降低65%以上返工率,并为TDD、E2E测试和UI快照提供可靠数据源。本文聚焦于M 阅读详情

前言:

项目开发中,影响项目进程的常常是由于在前后端数据交互的开发流程中停滞,前端完成静态页面的开发后,后端迟迟未给到接口。而现在,我们就可以通过根据后端接口字段,建立一个REST风格的API接口,进而实现mock数据实现前端的独立开发。

json-server

通过json-server完成mock数据

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

      Created with <3 for front-end developers who need a quick back-end for prototyping and mocking.

GitHub链接:https://github.com/typicode/json-server

1.安装

cmd命令行安装json-server

npm install json-server -g

安装完执行json-server -h,若安装成功则显示选项

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
  --middlewares, -m          Paths to middleware files                   [array]

  --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"]

  --foreignKeySuffix, --fks  Set foreign key suffix (e.g. _id as in post_id)
                                                                 [default: "Id"]

  --quiet, -q                Suppress log messages from output         [boolean]

  --help, -h                 Show help                                 [boolean]

  --version, -v              Show version number                       [boolean]
2.小试身手

新建db.json文件

运行cmd命令行

json-server --watch db.json

若打印出如下表 

则运行成功,因json-server默认监听的3000端口,直接访问地址:http://localhost:3000/posts可得结果

注:json-server里面的id是不可变的。用来标识每一条数据,这就好比该json文件时一个数据库,根属性名对应一张张的表,id是表里面的primary key。因此,如果如果你用put方法推入一条带有id的数据,是会被忽略的。

3.接口及参数

json-server支持CORS和JSONP跨域请求,支持GET, POST, PUT, PATCH 和 DELETE 方法,也提供了一系列的参数查询方法。

3.1简单应用

启动服务:json-server --watch db.json,通过jquery的ajax我们可以简单的应用

3.2接口应用
3.2.1使用get接口查询数据

通过地址:localhost:3000/posts?id=2,这种get方式完成参数请求

3.2.2使用post接口新增数据
 1 $.ajax({
 2             url:'http://localhost:3000/posts',
 3             dataType:'json',
 4             type:'post',
 5             data:{
 6                 "id":4,
 7                 "title":"css",
 8                 "author":"authorX"
 9             },
10             success:(data)=>{
11                 console.log(data);
12             },
13             error:(err)=>{
14                 console.log(err);
15             }
16         })

通过post方式,我们可以在db.json后面追加数据

 3.2.3使用put接口修改数据

通过修改type类型为put,对db.json中id=2的数据进行修改

 1 $.ajax({
 2             url:'http://localhost:3000/posts/2',
 3             dataType:'json',
 4             type:'put',
 5             data:{
 6                 "title":"css3",
 7                 "author":"authorX"
 8             },
 9             success:(data)=>{
10                 console.log(data);
11             },
12             error:(err)=>{
13                 console.log(err);
14             }
15         })

 

3.3参数应用
3.3.1 分页【关键字:_page】

应用:http://localhost:3000/posts?_page=1

 3.3.2 排序【关键字:_sort,_order】

_sort后面为要分类的键名

应用:http://localhost:3000/posts?_sort=author

_order为排序的方式。DESC(倒序),ASC(顺序)

应用:http://localhost:3000/posts?_sort=author&_order=DESC

3.3.3 切分【关键字:_start,_end,_limit】

类似于js里面的slice函数。slice(_start,_end),从数据里面取出数据。数据不包括_end,
_limit可以和_start配合,表示从_start位置开始_limit条数据被取出来。

应用:http://localhost:3000/posts?_start=1&_limit=3

3.3.4 操作【关键字:_gte,_lte,_ne,[key]_like】

_gte:大于或等于,_lte:小于或等于,_ne:不等于,[key]_like:模糊搜索

应用:http://localhost:3000/posts?author_like=author

3.3.5 全局搜索【关键字:q】

q为数据中全局搜索传入的参数

应用:http://localhost:3000/posts?q=json

3.3.6 字段扩展【关键字:_embed,_expand】

_embed:扩展子数据字段

_expand:扩展父数据字段

应用:http://localhost:3000/posts/2?_embed=search

 

4 结合mock.js生成随机数据

由于通过json-server结合js动态生成的json文件略显单一并且对于大量的数据显得不太适合

如下例子:

 1 module.exports=()=>{
 2     const data={users:[]}
 3     for(let i=0;i<1000;i++){
 4         data.users.push({
 5             id:i,
 6             name:`user${i}`
 7         })
 8     }
 9     return data
10 };

执行json-server index,js

于是我们借助mockjs生成更加符合实际测试的数据。

不少人认识到mockjs也是一个独立的mock servr,为啥不单独使用mockjs而结合json-server使用呢

把mockjs单独作为数据构造器使用是由于mockjs:

不能跨域使用;与某些框架的路由逻辑处理存在冲突;无法定义一些复杂的数据结构等。

4.1 结合mockjs构造数据接口
4.1.1 命令行安装mockjs
npm install mockjs --save

mock新闻列表数据:news.js

 1 let Mock=require('mockjs');
 2 let Random=Mock.Random;
 3 
 4 module.exports=()=>{
 5     let data={
 6         news:[]
 7     };
 8 
 9     let images=[1,2,3].map(x=>Random.image('120x60',Random.color(),Random.word(2,6)));
10 
11     for(let i=0;i<100;i++){
12         let content=Random.cparagraph(0,10);
13 
14         data.news.push({
15             id:i,
16             title:Random.cword(8,20),
17             desc:content.substr(0,40),
18             tag:Random.cword(2,6),
19             views:Random.integer(100,5000),
20             images:images.slice(0,Random.integer(1,3))
21         })
22     }
23     return data
24 }
4.1.2 运行
json-server news.js

部分截图:

至此,我们就可以通过json-server+mockjs完成完成的数据接口模拟。

 

更多参考:

    json-server:https://github.com/typicode/json-server

    mockjs:https://github.com/nuysoft/Mock/wiki/Getting-Started

 

RESTful API设计规范:降低协作熵值的工程实践指南 RESTful API 是一种基于 HTTP 协议的资源导向型架构风格,其核心在于通过统一接口、无状态交互和资源标识实现松耦合服务集成。理解 GET/PUT/POST/DELETE 的语义约束与幂等性原理,是避免前端反复适配、测试断言失效、网关规则混乱等协作熵增问题的技术基础。规范的价值不在于教条式遵循,而在于将模糊约定转化为可验证的契约——如标准化错误响应结构、ISO 8601 时间格式、分页参数命名等,从而支撑自动化文档生成、契约测试与网关治理。本文聚焦真实业务场景下的规范落地路径,涵盖 OpenAPI 阅读详情

相关推荐

正点原子lwIP实战指南——从FreeRTOS移植到网络应用开发

本文详细介绍了如何将轻量级TCP/IP协议栈lwIP移植到FreeRTOS实时操作系统上,并基于正点原子STM32开发板进行网络应用开发。内容涵盖从使用STM32CubeMX快速搭建工程、核心概念解析(RAW/NETCONN/Socket API),到关键的系统适配、驱动实现,并通过TCP Echo服务器和云台控制两个实战案例,手把手指导读者完成从移植到应用开发的全过程,帮助嵌入式开发者快速掌握lwIP在FreeRTOS环境下的稳定部署与开发技巧。

s4t5u6v的博客 1000

后端接口还没好?试试用Mock.js和JSON Server快速搭建前端开发环境

本文详细介绍了在前端开发中如何利用Mock.js和JSON Server快速搭建Mock服务,解决后端接口未就绪时的开发阻塞问题。通过对比两种工具的优缺点,提供实战配置教程和最佳实践,帮助开发者实现前后端分离开发,提升工作效率和联调质量。

weixin_29216957的博客 388

(35)远程识别(又称无人机识别)(一)

Ardupilot官网关于《Peripheral Hardware》的翻译 —《(35) 远程识别(又称无人机识别)》。

无人机开发(开源Ardupilot) 4万+

前端项目使用 json-server模拟数据

在命令行终端直接执行 npm server, 将会运行配置在 package.json 的 scripts 中的 json-server --watch db.json --port 4000。到此就能将页面请求以 /api/** 以及 /mock 开头的接口转发到 json-server 中去了。

z284747的博客 652

AI智能体项目管理框架agent-pm:从原理到实战的多智能体协作指南

在人工智能和自动化技术快速发展的今天,多智能体系统已成为实现复杂任务自动化的重要技术路径。其核心原理在于通过任务分解、角色分配和状态管理,让多个AI智能体像人类团队一样协同工作,从而突破单个模型的性能边界。这种架构的技术价值在于将软件工程中成熟的项目管理方法论引入AI领域,显著提升了自动化流程的可预测性、可观测性和可复用性。在实际应用场景中,多智能体协作框架能够高效处理从代码开发、文档撰写到数据分析等一系列任务,尤其适合需要多步骤、多专业协同的复杂项目。本文聚焦的agent-pm框架,正是这一领域的典型实践

weixin_42533910的博客 714

STM32F103RC学习(一)

STM32F103RC学习(一)

Cat_South_North的博客 6055

【数据模拟】还在愁没有后端接口测试?快来使用json-server零编码实现强大的后端接口

在写前端项目时,你是否会遇到以下情况: - 与后端进度不一致,急需接口测试项目功能 - 压根没有后端接口,而自己又迫切需要模拟接口模拟数据进行测试 若你正需要一套强大的,能够符合你心意的模拟的后端数据接口,那么`json-server`将是你的不二之选.........

前端之行,任重道远! 3268

Dinic算法的复杂度分析及证明

一般图 复杂度主要取决于dfs增广的过程。 将dfs部分的复杂度分成两部分来分析:1)修改增广路上边的流量。至多会增广mmm次,一条增广路的长度至多是nnn,所以这一部分的复杂度是O(nm)O(nm)O(nm)。2)dfs遍历时找增广路失败时经过的边。由于一旦从某条边出发找最短路失败了,我们就不会再走那条边(当前弧优化),所以这一部分的复杂度是O(m)O(m)O(m)的。故而dfs增广的复杂度是O...

这个博客已经搬到了:zhongyuwei.github.io 4390

json-server详细模拟GET、POST、DELETE等接口数据教程

json-server是一个Node模块,可以在30秒内创建一个完整的fake REST API。它不需要编写任何代码,只需要一个JSON文件作为数据源。json-server提供了以下主要功能:基于JSON文件快速创建REST API支持GET、POST、PUT、PATCH、DELETE等HTTP方法支持过滤、分页、排序和全文搜索可以添加自定义路由可以使用自定义中间件支持静态文件服务支持CORS和JSONP创建一个启动服务器时使用--routes创建一个next()

Ms_K_的博客 729

【PyTorch深度学习项目实战100例目录】项目详解 + 数据集 + 完整源码

大家好,我是阿光。本专栏整理了《深度学习100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。正在更新中~ ✨。

优快云 精品推荐 10万+

Autosar EcuM配置-初始化及下电执行函数-基于ETAS软件

Autosar EcuM学习笔记-上电初始化执行函数及下电前执行函数,本文介绍在EcuM中的配置及使用。

赞的博客 848

[前后端分离]Mock Restful Api工程化简单实现

1.前言 在前后端分离开发过程中,为了避免前端开发完成而后端接口还未跟上进度时,往往会用mock来模拟接口数据。可以选择用第三方mock平台,也可以选择自己搭建mock服务。这里我将给出一个简易的mock restful api服务源代码(node.js实现)。 更多mock相关内容参考mock.js官方http://mockjs.com/另外,推荐自己搭一个easy mock,可以很方便地模拟后端数据,非常好用~2.代码实现2.1 目录结构2.2 包依赖:package.json{  &nbsp

SCUhzs 632

点云从入门到精通技术详解100篇-基于点云语义分割的电力线提取及聚类研究

在现代社会,电力一直扮演着最重要的角色之一。它不仅与人民的生活息息相关,更是一个国家发展的命脉。近年来,随着我国各特高压输电线路建成(比如2022年1月份白鹤滩江苏特高压输电线路的放线)以及电网规模的不断扩大,我国年发电量稳步上升,人民的生活水平越来越高。我国土地辽阔,输电线路分布广泛,再加上地形环境复杂多样,电力线可能遭受风吹雨晒甚至是冰雪寒灾的影响。因此,为了保障电力线的可靠供电,防止停电意外发生,电力部门要定期对输电线路进行检查。目前我国主要。

getusushu的博客 1010

[json-server] RESTful API 中,取主数据时,同时获取多个关联子表的数据

项目背景: back-end:ASP.NET Core WebAPI front-end:Vue(+vue-router +vuex +axios)(webpack)(json-server + mockjs) mock数据部分用的 json-server + mockjs mockjs:通过循环创建大量数据,使用Random方法,产生出随机的数据,日期,邮箱,名字(中英)...

weixin_30709635的博客 662

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

react json-server + mock.js

react json-server + mock.js json-server json-server 官网: https://www.npmjs.com/package/json-server 中文: https://www.cnblogs.com/fly_dragon/p/9150732.html json-server使用规则: json-server把db.json 根节点...

lalao123_的博客 670

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

用JSON-server模拟REST API(二) 动态数据

上一篇演示了如何安装并运行 json server , 在这里将使用第三方库让模拟的数据更加丰满和实用。 使用动态数据 上一篇演示时,使用了 db.json 作为数据载体,虽然方便,但是如果需要大量的数据,则显得力不从心。幸好 json server 可以通过js动态生成json格式数据,官方例子为生成1000组user数据: # /mo...

weixin_34262482的博客 248

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

前后端分离之数据模拟

一、restful apirest,Representational State Transfer,“表现层状态转化”。什么是restful架构?1、每一个uri代表一种资源;2、客户端和服务器之间,传递这种资源的某种表现层;3、客户端通过四个http动词,对服务器端资源进行操作,实现"表现层状态转化"。4、get用来获取资源,post用来新建资源(也可以用于更新资源),put用来更新资源,del...

weixin_30609287的博客 160

这么好的 Mock 工具怎么还不用起来?

来源:tagerhttps://juejin.cn/post/7026165301255340045前言工具好不好用,关键在于用。肯定有很多前端程序猿联调前很悠闲????,但联调阶段持续加班,直...

weixin_46837985的博客 188

这么好用的 Mock 工具尽早用起来

作者:tagerhttps://juejin.cn/post/7026165301255340045前言工具好不好用,关键在于用。肯定有很多前端程序猿联调前很悠闲????,但联调阶段持续加班,直...

前端达人 920

如何在 Vue.js 中使用 Mock 数据:教程与技巧【前端mock】

如何在 Vue.js 中使用 Mock 数据:教程与技巧在开发过程中,为了测试和开发前端功能,你常常需要用到模拟(mock)数据。Vue.js 提供了灵活的方式来处理数据请求和更新,但在没有真实后端的情况下,我们可以使用 Mock 数据来代替真实 API 请求。本文将介绍如何在 Vue.js 项目中设置和使用 Mock 数据。确保你已经安装并配置了 Vue.js 项目。

weixin_43617604的博客 830

【前端】 如何在 Vue.js 中使用 Mock 数据:教程与技巧

在开发过程中,为了测试和开发前端功能,你常常需要用到模拟(mock)数据。Vue.js 提供了灵活的方式来处理数据请求和更新,但在没有真实后端的情况下,我们可以使用 Mock 数据来代替真实 API 请求。本文将介绍如何在 Vue.js 项目中设置和使用 Mock 数据。

九日的博客 1948

别再死记硬背了!用生活中的例子秒懂CPU、内存和I/O(比如点奶茶)

本文通过奶茶店的生动类比,深入浅出地解释了计算机核心组件CPU、内存和I/O的工作原理。从店员处理订单(CPU运算)到工作台暂存原料(内存缓存),再到仓库长期存储(硬盘),这些日常场景完美映射了计算机内部的数据处理流程,帮助读者轻松理解抽象的计算机概念。

weixin_33725807的博客 449

EMQX + TDengine 零代码接入:通过 MQTT 规则引擎将设备数据实时写入 TDengine

MQTT 是物联网领域最流行的数据传输协议之一,而 EMQX 是一款开源的高性能 MQTT Broker。本文基于当前仓库中的官方接入文档,讲解如何在不编写任何后端代码的前提下,仅在 EMQX Dashboard 中配置"规则引擎",即可把 MQTT 消息通过 taosAdapter 的 REST 接口自动写入 TDengine 时序数据库。读完本文,你将掌握:EMQX 与 TDengine 的完

gitblog_00015的博客 464
上一篇: Java虚拟机:GC算法深度解析
下一篇: MQ NameServer模块划分
linux12a
博客等级 码龄9年 20粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值