基于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 相关文章推荐
jsTree 基于JQuery的排序节点 Bug
Jul 26 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
Mar 03 Javascript
跟我学习javascript的var预解析与函数声明提升
Nov 16 Javascript
JavaScript代码性能优化总结(推荐)
May 16 Javascript
jQuery使用serialize()表单序列化时出现中文乱码问题的解决办法
Jul 27 Javascript
Vue.js实战之组件的进阶
Apr 04 Javascript
Js自定义多选框效果的实例代码
Jul 05 Javascript
微信小程序支付及退款流程详解
Nov 30 Javascript
不得不知的ES6小技巧
Jul 28 Javascript
JavaScript刷新页面的几种方法总结
Mar 28 Javascript
vue自定义指令directive的使用方法
Apr 07 Javascript
vue.js 解决v-model让select默认选中不生效的问题
Jul 28 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
JAVA/JSP学习系列之四
2006/10/09 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
浅析php面向对象public private protected 访问修饰符
2013/06/30 PHP
C# WinForm中实现快捷键自定义设置实例
2015/01/23 PHP
PHP Opcache安装和配置方法介绍
2015/05/28 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
PHP针对redis常用操作实例详解
2019/08/17 PHP
为指定元素增加样式的js代码
2009/12/09 Javascript
图片onload事件触发问题解决方法
2011/07/31 Javascript
javaScript对文字按照拼音排序实现代码
2013/12/27 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
jquery根据锚点offset值实现动画切换
2014/09/11 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
js实现的光标位置工具函数示例
2016/10/03 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
vue里如何主动销毁keep-alive缓存的组件
2019/03/21 Javascript
解决layui 表单元素radio不显示渲染的问题
2019/09/04 Javascript
js实现筛选功能
2020/11/24 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
python双向链表实现实例代码
2013/11/21 Python
深度剖析使用python抓取网页正文的源码
2014/06/11 Python
Python实现的检测网站挂马程序
2014/11/30 Python
使用pandas对两个dataframe进行join的实例
2018/06/08 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
2019/06/17 Python
Python中pymysql 模块的使用详解
2019/08/12 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
物流专业大学生的自我鉴定
2013/11/13 职场文书
2014年党员公开承诺践诺书
2014/03/25 职场文书
行政内勤岗位职责
2014/04/07 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
保送生自荐信
2015/03/06 职场文书
警告通知
2015/04/25 职场文书
甲午大海战观后感
2015/06/02 职场文书
mysql在项目中怎么选事务隔离级别
2021/05/25 MySQL