使用nodejs搭建api的mock服务

1. 介绍

  公司的业务开发都是静态页面,开发前期总是避免不了获取api的问题。在vue中有一些mockjs的方案,方案都是注入性质的,和最终部署总是有差别,而且业务大部分还在zepto下,很难找到合适的方案。而开发前期调整css样式需要真实的dom,不能总是写个静态页面来调试。正好利用koa2的便利性,搭建一个mock服务。

在线的mock服务其实还是不少的,大部分都是以 url路径作区分API的名字,对于普通的API是够用了,但对于根据输入参数作为API名称的情况,就没有办法了。比如我们公司的API:

@url
/api

@params
{
   func: "myapi",
   params: ‘{"name": "3333"}‘
}

这种奇特的API根本就没法用普通的mock实现好么。。。

所以自己开发了一套mock服务,github地址:https://github.com/wenlonghuo/xmocker-cli 。 也可以通过npm进行安装: npm i -g xmocker-cli。预览界面地址:http://xmocker.wlhot.top/#/about

  设计的目标为:

    1. 本地随意修改,不影响其他人

    2. 能开个代理,当本地数据不足,把API请求转发到其他服务器上

    3. 安装要方便,界面化操作。

2 实现

框架使用koa2进行开发,使用babel转换代码便于支持nodejs 6 的版本。本地化数据库,只要一个npm安装就直接使用。

整体结构为:

项目 -> API基础信息 -> API分支

添加项目、API后,可在界面上操作进行启动,重启等,同时还提供命令式启动文件服务器。

2.1 结构

  项目:名称,路径,端口,代理

  API基础信息: 名称,方法,URL,二级路径,二级路径对应值

  API分支:名称,判断条件,数据

2.2 实现不同API的区分

  将koa的middleware注册到所有的router上,使用koa-bodyparse获取post相关数据,整合所有的输入参数:

  

Object.assign({}, ctx.params, ctx.query || {}, ctx.request.body)

然后遍历api基础信息列表,判断指定的键值是否和预定的值相等,获得请求所属的API

2.3 对API进行二级区分

  要实现更加灵活的数据返回,只能添加自定义的函数了。在API配置中添加判断条件,通过 new Function形式生成函数,根据返回值判断,如果不为真,则检测下一分支,否则认定当前分支是目标值,取得mock数据,请求返回

2.4 代理的实现

  实现代理使用http-proxy模块。为方便使用,需要两种形式的代理: 指定api路径代理至服务器和未找到api时代理至服务器。前者很简单,使用koa-router直接注册添加中间件就好,后者需要利用koa的洋葱圈模型,在请求结束后判断http status为404,再代理至指定服务器

2.5 开启文件服务器

  光有API服务不行,毕竟我开发的是静态页面,总归要个文件服务,便于边写边调。使用koa-send模块实现文件服务,利用npm link或者npm install会在全局注册命令,方便的开启文件服务。

2.6 界面服务

  利用框架快速开发,使用iview框架,vue-cli生成脚手架,build生成dist文件,使用文件服务,监听6001端口,浏览器访问就可以控制服务了。

预览界面参见:http://xmocker.wlhot.top/#/about

3 使用

  利用npm link就能注册全局命令,简单的mocker start就能启动服务啦。当然,后续又加了一些实用的功能,稳定性之类的还有待优化,至少在开发速度上的提升还是比较大的。鉴于公司还不写测试用例,写完页面就算结束,这套API服务已经成为我们公司前端开发必用工具,至少mac和windows都能正常运行,也算没白花时间写了(反正只是练手)。欢迎使用这套工具,有什么问题可以在github上提issue,有互动才有更新的动力。

时间: 2024-07-30 10:13:07

使用nodejs搭建api的mock服务的相关文章

用nodejs搭建一个简单的服务监听程序

作为一个从业三年左右的,并且从事过半年左右PHP开发工作的前端,对于后台,尤其是对以js语言进行开发的nodejs,那是比较有兴趣的,虽然本身并没有接触过相关的工作,只是自己私下做的一下小实验,但是还是记录一下方便以后复习! 今天主要记录一下,很久以前用nodejs制作一个简单的服务监听程序的一些过程! 大家都知道,通过nodejs可以对前台请求进行监听,这里就放一个官网的hello world例子吧: var http = require('http'); http.createServer(

使用openssl和nodejs搭建本地https服务

本地开发有时会遇到必须使用https服务的情况,这里介绍一下使用openssl自签名证书,并使用nodejs开启https服务. 1. 安装openssl 在http://slproweb.com/products/Win32OpenSSL.html可以找到openssl安装包,可以根据介绍下载对应版本安装,安装完成后将安装位置bin目录的文件路径添加到系统环境变量,此时就可以在全局使用openssl指令,打开命令行输入`openssl -version`查看openssl是否正确安装.安装完成

微信小程序开发入门(一),Nodejs搭建本地服务器

1.  如何模拟真实环境中,读取服务端数据,首先需要使用Nodejs搭建一个本地服务器的环境. 在搭建web服务器之前,需要先安装node.js(安装版本最好为6.9.x) 安装后node.js,接下来就需要安装http的镜像文件 npm install http-server -g(windows下)sudo npm install http-server -g(linux和mac下)接下来在桌面创建一个文件夹 cd 文件夹名字http-server这时候,就会显示在8080端口下运行的一个本

nodejs入门API之net模块

net常用API解析以及应用 手动解析HTTP请求头 基于网络模块net与文件模块fs搭建简易的node服务 net模块部分API参数详细解析 一.net常用API解析以及简单的应用 net模块的组成部分: net.connect()实际上是net.createConnection()的别名,还有一个基于net模块子类的new net.socket()构造方法也具备相同的功能,都是用来创建一个新的客户端连接对象. net.createServer()同样有一个基于net模块子类的new net.

微信公众平台(1)-用nodejs搭建公众平台

今天给大家介绍如何用nodejs搭建微信公众平台. 先给大家介绍下微信公众平台:想必微信大家都知道,而微信公众平台就是特殊的微信号,能给关注的微信用户群发消息,关注的用户也可以通过自己查看服务并填写信息完成某些服务. 微信公众平台现在分为三种账号:订阅号.服务号.企业号. 订阅号主要针对于媒体,企业宣传,特点就是发送信息的次数相对于服务号要来得多:服务号主要针对于微商户.企业等,用于为关注用户提供服务,虽然发送信息的次数被限制得比较少,但是有很多订阅号不具备的接口,比如说自定义菜单,微信支付等:

使用 Nodejs 搭建一个简单的Web服务器

使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为要完成一个简单的Web服务器,你需要学习Nodejs中几个比较重要的模块,比如:http协议模块.文件系统.url解析模块.路径解析模块.以及301重定向问题,下面我们就简单讲一下如何来搭建一个简单的Web服务器. 作为一个Web服务器应具备以下几个功能: 1.能显示以.html/.htm结尾的Web页面 2.能直接打开以.js/.css/.json/.text结尾的文件内容 3.显示图片资源 4.自动下载以.apk/.

用nodejs搭建类似于C++的服务器后台.类似网易pomelo

实际的情况,用nodejs跑业务,非常的快,只要用好其无阻塞和回调这两点,处理速度真的是杠杠的. 从年初开始,我用nodejs搭建了类似C++的服务器后台,也想和做同样的事情的朋友分享,本服务平台因为已经实际商用,所以架构示意图就比较简单了,请谅解~ 先说说框架情况: 1.以net或者websocket为通信协议基础; 2.多进程,以父进程为守护进程,子进程作为业务进程; 3.数据库用mysql,主从; 4.以json为主要数据格式. 这样,可以将复杂的业务处理进行模块化,对于紧耦合则放在一起处

使用Nodejs搭建Web服务器

使用Nodejs搭建Web服务器是学习Node.js比较全面的入门教程,因为实现Web服务器需要用到Nodejs中几个比较重要的模块:http协议模块.文件系统.url解析模块.路径解析模块.以及301重定向技术等,下面我们就一起来学习如何搭建一个简单的Web服务器. 作为一个Web服务器应具备以下几个功能: 1.能显示以.html/.htm结尾的Web页面 2.能直接打开以.js/.css/.json/.text结尾的文件内容 3.显示图片资源 4.自动下载以.apk/.docx/.zip结尾

2018年最新手把手教你搭建中小型互联网公司后台服务架构与运维架构

本课程主要是针对如何从无到有搭建中小型互联网公司后台服务架构和运维架构的课程,课程所涉及的内容均是当前应用最广泛的技术和工具.本课程所讲解的技术体系已经在多个中小型互联网公司中实战运行使用,目前运行已经非常稳定,数据量也是在不断持续增加.并且,这个技术体系也正在被其他很多互联网公司应用,希望通过此课程,让大家能快速熟练掌握各个技术,并且能实际应用到项目中.课程将会通过实际案例讲解,并且会提供完整的视频案例源码供学员学习使用,同时有需要的企业或学员可以直接拿本套教学案例代码来使用或者二次开发. 本