基于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 相关文章推荐
JavaScript 的继承
Oct 01 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
Aug 13 Javascript
如何学习Javascript入门指导
Nov 01 Javascript
在JS方法中返回多个值的方法汇总
May 20 Javascript
解决JavaScript数字精度丢失问题的方法
Dec 03 Javascript
JavaScript实现简单Tip提示框效果
Apr 20 Javascript
Bootstrap CSS组件之导航(nav)
Dec 17 Javascript
js实现截图保存图片功能的代码示例
Feb 16 Javascript
JS跳转手机站url的若干注意事项
Oct 18 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
Feb 10 Javascript
vue 判断页面是首次进入还是再次刷新的实例
Nov 05 Javascript
vue3.0实现插件封装
Dec 14 Vue.js
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/08/01 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
Laravel 不同生产环境服务器的判断实践
2019/10/15 PHP
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
JavaScript(JS) 压缩 / 混淆 / 格式化 批处理工具
2010/12/10 Javascript
给jQuery方法添加回调函数一款插件的应用
2013/01/21 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
JavaScript简单判断复选框是否选中及取出值的方法
2015/08/13 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
jQuery zTree加载树形菜单功能
2016/02/25 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
2016/03/08 Javascript
Bootstrap每天必学之标签页(Tab)插件
2020/08/09 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
微信小程序访问node.js接口服务器搭建教程
2017/04/25 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
Vue 实现双向绑定的四种方法
2018/03/16 Javascript
node中使用log4js4.x版本记录日志的方法
2019/08/20 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
关于better-scroll插件的无法滑动bug(2021通过插件解决)
2021/03/01 Javascript
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
Python的Flask框架中使用Flask-SQLAlchemy管理数据库的教程
2016/06/14 Python
python如何统计序列中元素
2020/07/31 Python
python3实现点餐系统
2019/01/24 Python
详解python 爬取12306验证码
2019/05/10 Python
基于Python共轭梯度法与最速下降法之间的对比
2020/04/02 Python
python小白切忌乱用表达式
2020/05/29 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
国外平面设计第一市场:99designs
2016/10/25 全球购物
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
乡镇办公室工作决心书
2014/03/11 职场文书
机电专业求职信
2014/06/14 职场文书
机械工程师岗位职责
2014/06/16 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
学校领导班子成员查摆问题及整改措施
2014/10/28 职场文书
小学班主任教育随笔
2015/08/15 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书