GithubHelp home page GithubHelp logo

limingziqiang / mock-server Goto Github PK

View Code? Open in Web Editor NEW

This project forked from flftfqwxf/mockserver

1.0 2.0 0.0 12.33 MB

A nodejs web system for mock data【一个WEB版的数据模拟及文档管理系统】

Nginx 0.18% JavaScript 54.34% HTML 25.38% CSS 15.86% ApacheConf 0.01% PHP 4.24%

mock-server's Introduction

基于thinkjs开发的WEB MOCK-SERVER(数据模拟)工具 ,其主要目的是在前后端分离开发时,用于模拟后端返回数据

demo只作演示作用,并会定期清除数据

欢迎star,并提出改进意见

clone

git clone --depth=1 https://github.com/flftfqwxf/mock-server

Install dependencies

npm install

导入mysql数据库文件

需要安装mysql[5.7.14], 并导入最新的mockserver-xx-xx.sql 文件
修改/src/common/config/db.js中的数据库配置

Start server

npm start

功能说明

支持可视化编辑JSON接口数据及接口文档

支持GET、POST、PUT、DELETE请求类型

支持指定返回状态码,默认200

支持延时返回数据

支持mockjs

支持跨域调用项目接口

支持单个接口代理到真实服务器(开发过程中某个接口使用模拟数据,当此接口已开发完成后,可将指定接口,通过此服务指向到真实接口上)

开发中功能:

 
 支持类似【postman】接口测试功能

如图所示,大致包含了以下功能:

选择项目、接口名称、接口地址:

(注意:所以接口都强制了[API]前缀,这个是为了规范接口,后期如有需要可以改为可配置)

接口请求类型:PUT、POST、GET、DELETE

匹配方式:分为全地址匹配和部分匹配

有些时候,你的请求地址的参数是动态的,比如分页【http:192.168.0.2/a?page=1】,
这个时候的路径匹配就不能全路径匹配,而是只需要匹配【?】前部分

请求参数及请求参数说明:

添加了可视化的JSON编辑器,方便查看,也可验证数据格式正确性

二次代理设置

在实际开发中,我们常常会遇到这种情况,在开发的前期,数据接口的数据是模拟的, 但是开发到了中后期,部分真实的接口已经开发好,就需要以真实的数据来测试, 在以前只能将整个mock-server服务切换到真实的接口服务上,但是这样存在一个问题, 就是如果在项目中期,部分接口完成了,部分接口没完成,就比较麻烦, 此功能就是指定某个接口去访问真实的接口的方法。

二次代理是指将本来代理到mock-server系统的接口,再次代理到其他的服务上

二次代理前缀:是指将此接口的域名指向到你想指向的地址

举例说明

开发中:

1)某个AJAX服务,需要模拟,通过NGINX或其他方法将 [http://127.0.0.1/api]下所有请求,全部指向到本系统,

并假定本系统启动后的地址为【http://127.0.0.1:8083】.

2)当访问[http://127.0.0.1/api/a.json]时,实际会代理到【http://127.0.0.1:8083/api/a.json】

3)当访问时,系统会在数据库查询到该接口,并返回模拟数据

某个接口的真实完成后:

同样是第三步,可以通过开启二次代理,将请求再次代理到真实的接口上,以此达到更灵活在模拟数据和真实数据切换目的

如:

原本被代理到【http://127.0.0.1:8083/api/a.json】返回的数据,

通过设置二次代理为【http://192.168.0.1:8083】,则会返回

【http://192.168.0.1:8083/api/a.json】

而为了更灵活的设置二次代理:

分别开发了,全站级二次代理、项目级二次代理、单个接口的二次代理

权重为全站级二次代理 <项目级二次代理 <单个接口的二次代理

 注意:如果开启了二次代理,在返回接口的最后一个字段将为[proxyDataSource],
 值为你实际请求的接口完整地址,以方便实际使用中,知道自己是访问的模拟数据,还是真实数据

接口返回值及参数说明:

你可以通过点击从【从二次代理中获取数据,并填充,保存后生效】从你设置的二次代理中获取到真实数据,
达到类似postman验证数据接口正确性的功能

开启mockjs:

 同时,为了更好的模拟数据,整合了mockjs,mockjs官网

header头信息返回数据:

 除了返回json外,有些时候还需要返回一些特定的header信息,如登录的token验证
 如此一个模拟数据基本成型.

接口列表:

提供搜索、复制、快速开启关闭二次代理功能,点击接口可以直接查看接口返回内容

全局设置:

全局二次代理前缀:

 前面已讲过作用,此处是设置一个全局二次代理,当你在项目或添加接口时没有二次代理时,就会使用此二次
 代理(强烈建议设置,因为当你访问一个在本系统中根本没有定义的接口时,如果设置了此项,系统依然会将
 你访问的接口代理到此处设置的服务上,这对于一些老接口非常有用,不用在此系统上,将老接口在此系统上
 再定义一遍,当然从文档记录上讲,再定义一遍,作为接口的文档记录是可取的)

header头信息设置:

 在某些时候,AJAX请求的头信息中需要传递一些特殊字段,如:当发起一个AJAX请求,请求的header中带有【Authorization】字段,用于验证用户权限,此处就是用于设置当存在这些header字段时,需要传递到真实的server端,主要是二次代理开启后使用:

 举例说明:

 1)从客户端发起请求【http://192.168.1.2/a.json】,header信息中带有【Authorization】字段,用于在服务端验证用户权限

 2)代理到本系统,并该接口开启了二次代理,为了正确的获取到数据,本系统就会将全局header设置里去查找是否有【Authorization】字段,当存在该字段并且客户端传过来的header信息中有值时,就会传给二次代理的接口,并返回数据,如果不传此header信息,从真实的接口处,由于无法验证用户权限就无法返回正确数据

 为什么不把所有头信息都完整复制后传过去?

 这确实是一种方案,这样就不用去单独去设置,但是在此前的实践中,发现完全把客户端的头信息传递给二次代理,有时候会发现服务端无法返回正确数据,查了相关资料,原因可能是:http信息的传递是有顺序的,当通过循环将HEADER信息传递给 真实服务时,可能服务端无法返回正确数据,如果哪位有解决方案,可以告之,谢谢。

项目管理:

添加/修改项目

 主要用于在不同项目中作区分管理

项目列表:

更新日志:

2017-4-11 

有更新,需要重新导入数据库文件

支持跨域调用项目接口

添加header 代理白名单和黑名单

允许自定义项目接口前缀

优化交互体验及BUG

 添加返回状态码
 
 添加延迟返回数据
 
 优化部分验证

mock-server's People

Contributors

flftfqwxf avatar

Stargazers

郑庆鑫 avatar

Watchers

James Cloos avatar ²¹带你去旅行♬ ♫♬ avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.