基于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 相关文章推荐
ASP.NET中AJAX 调用实例代码
May 03 Javascript
javascript ie6兼容position:fixed实现思路
Apr 01 Javascript
JS中数组Array的用法示例介绍
Feb 20 Javascript
JavaScript检测并限制复选框选中个数的方法
Aug 12 Javascript
js实现自定义进度条效果
Mar 15 Javascript
vue中父子组件注意事项,传值及slot应用技巧
May 09 Javascript
对node.js中render和send的用法详解
May 14 Javascript
js实现敏感词过滤算法及实现逻辑
Jul 24 Javascript
VuePress 快速踩坑小结
Feb 14 Javascript
Vue Echarts实现可视化世界地图代码实例
May 07 Javascript
详解babel升级到7.X采坑总结
May 12 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
Apr 15 Javascript
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
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
php抓取网站图片并保存的实现方法
2015/10/29 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法
2016/01/19 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
2016/06/23 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
JAVA中截取字符串substring用法详解
2017/04/14 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
2020/04/28 Javascript
js实现直播点击飘心效果
2020/08/19 Javascript
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
Python自动登录126邮箱的方法
2015/07/10 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
Python对excel文档的操作方法详解
2018/12/10 Python
python防止随意修改类属性的实现方法
2019/08/21 Python
Python Pandas 对列/行进行选择,增加,删除操作
2020/05/17 Python
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
英国女士家居服网站:hush
2017/08/09 全球购物
蹦床仓库:Trampoline Warehouse
2018/12/06 全球购物
美国女士内衣在线折扣商店:One Hanes Place
2019/03/24 全球购物
个人生活学习自我评价范文
2013/11/26 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
工厂清洁工岗位职责
2015/02/14 职场文书
vue实现锚点定位功能
2021/06/29 Vue.js
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL
详解Flutter网络请求Dio库的使用及封装
2022/04/14 Java/Android