基于Koa2写个脚手架模拟接口服务的方法


Posted in Javascript onNovember 27, 2018

ap-cli 前端模拟接口服务脚手架

项目地址

依据接口定义,帮助你快速的完成接口模拟工作。

主要功能:

  • [x] 通过json、js、swagger文件模拟接口数据
  • [x] 通过正则匹配指定需要mock的文件
  • [x] 生成简单markdown接口文档

开始

下载ap-cli

$ npm install ap-cli -g

创建data.json

[
 {
  "url": "/api/get/index",
  "method": "get",
  "response": {
   "name": "pc",
   "status": "success"
  }
 }
]

运行

$ ap-cli -m data.json

现在打开 http://localhost:3000/api/get/index ,你会得到

{ "name": "pc", "status": "success" }

同时会在当前文件目录生成一个简单的markdown接口文档

使用

1、通过js方式模拟数据

格式查看

data.js

const getUserList = () => {
 const data = {
  "summary": "获取用户列表(get方式)",
  "url": "/api/get/userList",
  "method": "get",
  "parameters": "",
  "response": {
   "count": 100,
   "userList": []
  }
 }
 for (let i = 0; i < 100; i++) {
  data.response.userList.push({ id: i, name: `user${i}` })
 }
 return data
};

module.exports = {
 getUserList
};

运行

$ ap-cli -m data.js

查看接口

http://localhost:3000/api/get/userList

2、通过swagger文件模拟数据

这种方式主要是通过swagger生成一个xx_new.json文件,然后进行模拟数据

# 运行会生成一个swagger_new.json文件
$ ap-cli -s swagger.json
# 模拟数据
$ ap-cli -m swagger_new.json

通过正则匹配指定要模拟的文件

当前目录下有3个文件a1.json、a2.js、b1.js,你可以通过正则只模拟a1.json和a2.js文件的数据。

$ ap-cli -m all -r /^a/

CLI用法

# 缩写 完整 默认 说明
1 -m --mock [fileName] 'all' 模拟接口服务,[fileName]当前目录下要mock的文件名,[all]默认当前目录下的所有文件
2 -r --regexp [regexp] 通过正则匹配需要mock的文件
3 -s --swagger [fileName] 通过swagger生成json模板文件,[fileName]当前目录下的swagger文件名
4 -p --port [port] 3000 指定mock的端口

完整模板及说明

不管是json、js、swagger文件,最终都是转换成下面的格式进行处理。

示例

[
 {
  "summary": "获取用户信息接口json",
  "url": "/api/get/userinfo",
  "method": "post",
  "parameters": {
   "parsing": true,
   "child": [
    {
     "key": "userid",
     "type": "string",
     "required": true,
     "description": "user id"
    }
   ]
  },
  "response": {
   "body": {
    "id": "0001",
    "status": "success",
    "userinfo": {
     "name": "pc",
     "age": 18,
     "gender": "boy"
    }
   }
  }
 }
]

主要属性说明

# 字段 类型 说明 默认 是否必须 备注
1 summary string 接口概述 xxx接口
2 url string 接口地址 /api
3 method string http请求方式 get
4 parameters / 接口请求参数 可显示为表格(详见下1-1.parameters属性说明)
5 response / 接口响应数据

1-1. parameters属性说明

# 字段 类型 说明 默认 是否必须 备注
1 parsing boolean 是否解析 false
2 child object [] 子节点 子节点属性(详见1-1-1.child属性说明)

1-1-1. child属性说明

# 字段 类型 说明 默认 是否必须
1 key string 字段名称 -
2 type string 字段类型 string
3 description string 字段说明
4 required boolean 是否必须 false
5 child object [] 子节点数据

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 添加网页桌面快捷方式的代码详细整理
Dec 27 Javascript
在JavaScript中typeof的用途介绍
Apr 11 Javascript
JS 毫秒转时间示例代码
Sep 22 Javascript
js控制浏览器全屏示例代码
Feb 20 Javascript
jQuery基于当前元素进行下一步的遍历
May 20 Javascript
简介JavaScript中的getSeconds()方法的使用
Jun 10 Javascript
JS动态日期时间的获取方法
Sep 28 Javascript
JavaScript DOM 学习总结(五)
Nov 24 Javascript
js处理层级数据结构的方法小结
Jan 17 Javascript
jQuery实现淡入淡出的模态框
Feb 09 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
Sep 11 Javascript
Jquery的autocomplete插件用法及参数讲解
Mar 12 jQuery
Vue实现移动端左右滑动效果的方法
Nov 27 #Javascript
vue2.0移动端滑动事件vue-touch的实例代码
Nov 27 #Javascript
详解vuex 渐进式教程实例代码
Nov 27 #Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
Nov 27 #Javascript
Node+OCR实现图像文字识别功能
Nov 26 #Javascript
图片文字识别(OCR)插件Ocrad.js教程
Nov 26 #Javascript
JS 验证码功能的三种实现方式
Nov 26 #Javascript
You might like
深入解析PHP的引用计数机制
2013/06/14 PHP
php实现简单的MVC框架实例
2015/09/23 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
jquery 按键盘上的enter事件
2014/05/11 Javascript
分享几种比较简单实用的JavaScript tabel切换
2015/12/31 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
js+SVG实现动态时钟效果
2018/07/14 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
详解elementui之el-image-viewer(图片查看器)
2019/08/30 Javascript
[52:09]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第二场
2014/05/26 DOTA
python删除文件示例分享
2014/01/28 Python
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
Python版微信红包分配算法
2015/05/04 Python
对python中return和print的一些理解
2017/08/18 Python
详解Django的model查询操作与查询性能优化
2018/10/16 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
python二维码操作:对QRCode和MyQR入门详解
2019/06/24 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
Python包和模块的分发详细介绍
2020/06/19 Python
python中upper是做什么用的
2020/07/20 Python
Python DataFrame使用drop_duplicates()函数去重(保留重复值,取重复值)
2020/07/20 Python
golang/python实现归并排序实例代码
2020/08/30 Python
HTML5中新标签和常用标签详解
2014/03/07 HTML / CSS
阻止移动设备(手机、pad)浏览器双击放大网页的方法
2014/06/03 HTML / CSS
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
师生聚会感言
2014/01/26 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
个人综合鉴定材料
2014/05/23 职场文书
白莲教口号
2014/06/18 职场文书
HTML5简单实现添加背景音乐的几种方法
2021/05/12 HTML / CSS
详解Vue的列表渲染
2021/11/20 Vue.js