Apinto 网关进阶教程,使用 API Mock 生成模拟数据

什么是 API Mock ?

API Mock 是一种技术,它允许程序员在不依赖后端数据的情况下,模拟 web服务器端 API 的响应。通常使用 API Mock 来测试前端应用程序,而无需等待后端程序构建完成。API Mock 可以模拟任何 HTTP 请求方法,并进行响应测试。

当我们需要调试后端接口时,有时候接口文档已经发布,但是后端接口还没有完全开发完成。这种情况下,我们可以使用 API Mock 生成动态模拟数据,以便进行前端页面布局、兼容性调试等工作。

使用 Apinto Mock 插件生成动态模拟数据

Apinto 开源网关在v0.12版本新增了http_mocking插件。当执行该插件时,它将随机返回指定格式的模拟数据,并且请求不会转发到上游。

接下来我们将给大家演示如何使用 Apinto 生成 Mock 模拟数据。

前期准备

1. 准备模拟接口信息

用户信息接口为例,下图是接口的返回内容,在此处,我们定义了用户数组(users),每个用户包含了 emailnameip 字段信息。

图片

2. 编写 Mock 规则

在这里,我们将构造 users 数组,随机生成对象中的 emailnameip

{'users|1-10':[{"email":"@email","name":"@name","ip":"@ip"}]
}

Mock 规则可参考 MockJS 官网。

3. 生成 Json Scheme 语法

1)打开 MockJS官网,并打开调试控制台。

图片

2)在控制台中输入下列代码

JSON.stringify(Mock.toJSONSchema(
{'users|1-10':[{"email":"@email","name":"@name","ip":"@ip"}]
}
))

执行完成后,即可生成 JSON Scheme 语法数据,如下图:

图片

上图红框部分使用第一步编写的 Mock 规则。执行完成后生成如下数据:

图片

使用 Apinto 生成 mock 数据

为了让使用者快速上手,我们此处演示的教程使用 Apinto 可视化项目 Apinto-Dashboard 进行演示。项目仓库地址请按需点击:

· Apinto 项目地址:👉点击跳转

· Apinto-Dashboard项目地址:👉点击跳转

1. 新增节点插件

在左侧导航栏中,点击 基础设施 > 节点插件,进入节点插件列表。点击 添加插件

图片

点击拓展 ID 单选框,在下拉选项后选中 http-mocking 插件:

图片

填写插件名称信息,点击保存:

图片

注意:该步骤非必需,仅在节点插件列表中需要使用的插件时才需要执行。

2. 发布节点插件

在左侧导航栏中,点击 基础设施 > 集群,进入集群列表。选中需要发布节点插件的集群,点击进入:

图片

点击 节点插件 选项卡,选中插件后方的扳手按钮:

图片

在弹出框中,将状态改成 启用 ,点击 提交 

图片

在节点插件列表,点击 发布

图片

在弹出框中点击 提交

图片

注意:该步骤非必需,仅在节点插件有改动时(新增、删除、修改节点插件顺序等),才需要重新在集群中发布上线。

3. 新增API操作模版,绑定 http-mocking 插件

在左侧导航栏中,点击 公共配置 > API操作模版,进入操作模版列表后,点击 新建模版

图片

点击添加插件

图片

在弹出框中选中上一步新增的节点插件,填写插件配置

图片

参数配置说明

图片

此处,我们将上文生成的 Mock 规则 填入 response_schema 字段中,得到完整插件配置,如下:

图片

填写完成后点击保存。

点击保存成功的插件模版,进入到 上线管理 页面,点击 上线 按钮

图片

4. 新增 API,并绑定 API 操作模版

在左侧导航栏中,点击 API ,进入 API 列表后,点击 新建API,选中 HTTP 。

图片

填写接口的基本信息,绑定上游,绑定插件模版。

图片

此处由于绑定了包含 http-mocking 插件的 API 插件模版,因此请求将会被网关拦截,返回网关生成的 Mock 数据信息,不会将请求转发给上游服务。

保存后,点击 API 后方的上线管理按钮,将 API 上线到对应的集群即可。

图片

5. curl 调用接口

使用 curl 命令调用接口 /user/info/http/mock

curl http://172.18.65.72:8099/user/info/http/mock

返回数据结果:

图片

写在最后

目前Apinto 及其周边项目已经开源,我们希望通过Apinto强大的插件拓展能力,用户可像乐高积木一样根据需要自行拓展Apinto的插件,以满足不同的业务市场需求。

Apinto 目前属于萌芽阶段,我们希望集合广大开源爱好者的力量,与大家一起讨论方案,接受大家的批评指正,一起将产品打磨完善,做下一个端与端间的Traffic Middleware。这是一个开放和积极的项目,我们诚挚地邀请您一起参与到我们的项目开源工作中。每一个贡献都是有意义的,包括但不限于:

·查找 bugs,取得性能上的提升

·帮助完善文档,提供用户操作体验

·提交你们的 issue,让我们知道您的奇思妙想

·参与自定义插件的开发,丰富 Apinto 的能力

...

欢迎各位开源爱好者参与到 Apinto 项目中,和我们一起为开源事业贡献自己的力量!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/168506.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux安装nodejs

写在前面 因为工作需要,需要使用到nodejs,所以这里简单记录下学习过程。 1:安装 wget https://nodejs.org/dist/v14.17.4/node-v14.17.4-linux-x64.tar.xz tar xf node-v14.17.4-linux-x64.tar.xz mkdir /usr/local/lib/node // 这一步骤根…

使用电脑时提示msvcp140.dll丢失的5个解决方法

“计算机中msvcp140.dll丢失的5个解决方法”。在我们日常使用电脑的过程中,有时会遇到一些错误提示,其中之一就是“msvcp140.dll丢失”。那么,什么是msvcp140.dll呢?它的作用是什么?丢失它会对电脑产生什么影响呢&…

人工智能基础_机器学习022_使用正则化_曼哈顿距离_欧氏距离_提高模型鲁棒性_过拟合_欠拟合_正则化提高模型泛化能力---人工智能工作笔记0062

然后我们再来看一下,过拟合和欠拟合,现在,实际上欠拟合,出现的情况已经不多了,欠拟合是 在训练集和测试集的准确率不高,学习不到位的情况. 然后现在一般碰到的是过拟合,可以看到第二个就是,完全就把红点蓝点分开了,这种情况是不好的, 因为分开是对训练数据进行分开的,如果来…

如何将NetCore Web程序独立发布部署到Linux服务器

简介 在将 .NET Core 应用程序部署到 Linux 服务器上时,可以采用独立发布的方式,以便在目标服务器上运行应用程序而无需安装 .NET Core 运行时。本文介绍如果将NetCore Web程序独立发布部署到Linux服务器。 1、准备一台服务器 服务器配置:2核2G 系统环境:Alibaba Cloud…

可视化技术专栏100例教程导航帖—学习可视化技术的指南宝典

🎉🎊🎉 你的技术旅程将在这里启航! 🚀🚀 本文专栏:可视化技术专栏100例 可视化技术专栏100例领略各种先进的可视化技术,包括但不限于大屏可视化、图表可视化等等。订阅专栏用户在文章…

1994-2021年分行业二氧化碳排放量数据

1994-2021年分行业二氧化碳排放量数据 1、时间:1994-2021年 2、来源:原始数据整理自能源年鉴 3、指标:统计年度、行业代码、行业名称、煤炭二氧化碳排放量、焦炭二氧化碳排放量、原油二氧化碳排放量、汽油二氧化碳排放量、煤油二氧化碳排放…

【Python】AppUI自动化—appium自动化元素定位、元素事件操作(17)下

文章目录 前言一.Appium 元素定位1.定位方式种类2.如何定位2.1 id定位2.2 className定位2.3 content-desc 定位2.4 Android Uiautomator定位4.1 text定位4.2 text模糊定位4.3 text正则匹配定位4.4 resourceId定位4.5 resourceId正则匹配定位4.6 className定位4.7 className正则…

Android拖放startDragAndDrop拖拽Glide加载堆叠圆角图,Kotlin(5)

Android拖放startDragAndDrop拖拽Glide加载堆叠圆角图,Kotlin(5) import android.content.ClipData import android.graphics.Canvas import android.graphics.Point import android.os.Bundle import android.util.Log import android.view.…

Leetcode刷题详解—— 组合总和

1. 题目链接:39. 组合总和 2. 题目描述: 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些…

Fortran 中的指针

Fortran 中的指针 指针可以看作一种数据类型 指针存储与之关联的数据的内存地址变量指针:指向变量数组指针:指向数组过程指针:指向函数或子程序指针状态 未定义未关联 integer, pointer::p1>null() !或者 nullify(p1) 已关联 指针操作 指…

2000-2022年上市公司数字化转型同群效应数据

2000-2022年上市公司数字化转型同群效应数据 1、时间:2000-2022年 2、指标:股票代码、年份、行业代码、行政区划代码、数字化转型程度-A、数字化转型程度-B、同行业同群-数字化转型程度-A_均值、同行业同群-数字化转型程度-A_中位数、同省份同群-数字化…

【分布式事务】初步探索分布式事务的概率和理论,初识分布式事的解决方案 Seata,TC 服务的部署以及微服务集成 Seata

文章目录 一、分布式服务案例1.1 分布式服务 demo1.2 演示分布式事务问题 二、分布式事务的概念和理论2.1 什么是分布式事务2.2 CAP 定理2.3 BASE 理论2.4 分布式事务模型 三、分布式事务解决方案 —— Seata3.1 什么是 Seata3.2 Seata 的架构3.3 Seata 的四种分布式事务解决方…