Mock.js模拟接口数据

时间: 2019-11-05阅读: 838标签: 接口

现在开发已经是前后端分离了,前端和后端可以同时进行开发,互不影响,但是有些时候后端开发的接口慢于前端,导致前端需要等待后端的接口完成才能完成前后端对接,为了解决这个痛点,出现了模拟接口数据的方案,目前行业中主要有四种方案来模拟后端放回的数据:

  • 暴力式,直接在前端代码中写入模拟数据,但是这种缺点很明显,改变了代码的原有逻辑,嵌入式太深,耦合性搞
  • 拦截式,这就是本文主要推荐的方式,通过拦截ajax请求,然后重定向到项目中的某个js文件,从js文件中获取各种伪造的数据
  • Mock Server,就是搭建一个Mock服务器来模拟数据,根据这个服务器来生产需要的接口数据,很显然这种成本有点高,不适合任何人,特别是大型的团队,文档的编写,接口的变更,通知到每一个人,代价就比较大了
  • Mock 平台,比如市面上RAP,但是需要后端使用他,未必所有的后端都愿意使用他


Mock.js:生成随机数据,拦截 Ajax 请求,Mock.js 通过覆盖和模拟原生 XMLHttpRequest 的行为来拦截 Ajax 请求,“转发”到本地文件,所谓转发,其实就是读取本地 mock文件,并以json或者script等格式返回给浏览器。
Mock.js具有以下几个特点:

  • 让前端攻城师独立于后端进行开发,前后端可以同时进行。
  • 不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据。
  • 支持生成随机的文本、数字、布尔值、日期、邮箱、链接、图片、颜色等。
  • 通过随机数据,模拟各种场景。


安装

# 推荐通过npm安装
npm install mockjs


使用示例

// 首先在js文件中引进
var Mock = require('mockjs')
var data = Mock.mock({
    // 属性 list 的值是一个数组,其中含有 1 到 10 个元素
    'list|1-10': [{
        // 属性 id 是一个自增数,起始值为 1,每次增 1
        'id|+1': 1
    }]
})


语法

主要可以分成以下两个方面:

  • 数据模板定义规范
  • 据占位符定义规范

数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:'name|rule': value

  • 'name|min-max': string=>通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max)
  • 'name|count': string=>通过重复 string 生成一个字符串,重复次数等于 count
  • 'name|+1': number=>属性值自动加 1,初始值为 number
  • 'name|min-max': number=>生成一个大于等于 min、小于等于 max 的整数,属性值 number 只是用来确定类型
  • 'name|count': object=>定对象中随机选择两条数据,
Mock.mock({
  "object|2": {
    "310000": "上海市",
    "320000": "江苏省",
    "330000": "浙江省",
    "340000": "安徽省"
  }
})

输出为:

{
  "object": {
    "320000": "江苏省",
    "330000": "浙江省"
  }
}

数据占位符定义规范 DPD
占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。

  • 来标识其后的字符串是 占位符。
  • 符 引用的是 Mock.Random 中的方法。
  • Mock.Random.extend() 来扩展自定义占位符。
  • 符 也可以引用 数据模板 中的属性。
  • 符 会优先引用 数据模板 中的属性。
  • 符 支持 相对路径 和 绝对路径。

可以通过Mock.setup( settings ),配置拦截 Ajax 请求时的行为。支持的配置项有:timeout
指定被拦截的 Ajax 请求的响应时间,单位是毫秒。值可以是正整数,例如 400,表示 400 毫秒 后才会返回响应内容;也可以是横杠 '-' 风格的字符串,例如 '200-600',表示响应时间介于 200 和 600 毫秒之间。默认值是'10-100'。

Mock.setup({
    timeout: 400
})
Mock.setup({
    timeout: '200-600'
})
站长推荐

1.阿里云: 本站目前使用的是阿里云主机,安全/可靠/稳定。点击领取2000元代金券、了解最新阿里云产品的各种优惠活动点击进入

2.腾讯云: 提供云服务器、云数据库、云存储、视频与CDN、域名等服务。腾讯云各类产品的最新活动,优惠券领取点击进入

3.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/6283

浅谈JavaScript中的接口

接口是面向对象JavaScript程序员的工具箱中最有用的工具之一。在设计模式中提出的可重用的面向对象设计的原则之一就是“针对接口编程而不是实现编程”,即我们所说的面向接口编程,这个概念的重要性可见一斑。

关于使用Promise/async await解决循环请求接口的问题

我有一组list,包含了所有的预定id,现在我需要循环这组id去请求一个接口,以获取详情信息.这里需要注意的点是:我需要的信息并不是一个接口可以请求完的,而是需要循环请求接口

TypeScript中的接口

TypeScript的核心原则之一是对值所具有的结构进行类型检查。 它有时被称做“鸭式辨型法”或“结构性子类型化”。 在TypeScript里,接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约

nodejs接口如何限流?

在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流。那么何为限流呢?顾名思义,限流就是限制流量,就像你宽带包了1个G的流量,用完了就没了。通过限流,我们可以很好地控制系统的qps,从而达到保护系统的目的

ts中接口的用法

属性接口:接口中可定义 确定属性、可选属性、任意属性、只读属性;只读属性也是确定属性,在对象变量定义的时候必须有值,此后不能修改、函数接口对方法传入的参数以及返回值进行约束

JSON API免费接口

各种提供JSON格式数据返回服务网站的API接口,为大家搜集了一些能够返回JSON格式的服务接口。部分需要用JSONP调用。

接口

接口的作用:在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用。接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据

vue项目用到的mock数据接口的两种方式

使用devServer.before进行数据mock,通过配置devServer.before选项,设置url访问路径及response响应数据,进行mock数据。使用Mock.js进行数据mock根据数据模板生成模拟数据。

如何使用 React hooks 获取 api 接口数据

在本教程中,我想向你展示如何使用 state 和 effect 钩子在React中获取数据。 你还将实现自定义的 hooks 来获取数据,可以在应用程序的任何位置重用,也可以作为独立节点包在npm上发布。

前后端分离,接口对接问题

关于前后端对接问题下面好程序员web前端学习路线为大家解答。对于前后端分离开发,必须要写接口文档。否则,第一:前后端开发没有标准,没有依据。第二:容易扯皮,没法追踪,职责不清

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!

文章投稿关于web前端网站点搜索站长推荐网站地图站长QQ:522607023

小程序专栏: 土味情话心理测试脑筋急转弯幽默笑话段子句子语录成语大全运营推广