当前位置: 首页 > news >正文

API 的多分支管理,让 Apifox 帮你轻松搞定!

在产品迭代的过程中,对 API 的更新和维护是必然的,也是至关重要的。当产品需要引入新功能或对现有功能进行调整时,相应的 API 往往也需要进行升级或修改,这种情况在快速迭代的产品中很是常见。

然而,API 的迭代更新并非易事,在随着产品进行升级或修改的过程中,在管理 API 时往往会面临一些问题:

  • 如何在保证现有接口稳定性的同时,有效地进行 API 迭代和测试?

  • 如何在多个并行开发的迭代中管理 API,确保各迭代不会相互干扰?

针对这些场景,Apifox 推出了「迭代分支」功能。这个功能提供了一种灵活的方式来管理 API,它允许你在独立的分支上进行 API 的迭代升级和新功能开发,而不会影响主分支中线上接口的稳定性

迭代分支功能支持版本控制、并行协作和快速合并,每个分支都是独立的版本,互不干扰,并且可以快速将分支中的更改合并回主分支。

图片

Apifox 中的分支工作流

理解迭代分支的使用场景

「迭代分支」功能允许你在项目中创建多个开发分支,以便在不同阶段进行 API 的升级、迭代和测试,而不会影响到主分支(即当前稳定版本)

图片

何时考虑使用迭代分支?

什么情况下应该使用迭代分支呢?以下几种情况很适合:

  • 功能开发与测试:在新的迭代分支上开发和测试新功能,而不影响主分支上的稳定版本。

  • 升级与 Bug 修复:在专门的分支上升级、更新接口或者修复 Bug,测试通过后合并到主分支。

  • 实验和验证:对 API 进行实验性修改,验证其效果后再决定是否合并到主分支。

何时考虑不使用迭代分支?

如果只是进行小规模的接口更新,或者修复一个简单的错误,直接在主分支上操作可能更方便快捷。

如果你的业务需要提供多个版本的 API 供外部用户进行调用,为了确保外部用户使用的稳定性和一致性,更推荐使用最新的「接口版本」功能,这会更契合你的业务需求。

下面就来简要介绍一下「迭代分支」功能的使用,如果要更详细的使用方法可以参考帮助文档的迭代分支模块,在开始之前,请确保将 Apifox 更新到了最新版

下载 Apifox 最新版

创建迭代分支

当你的项目角色为「管理员」或「编辑者」时,可以在目录树顶端右上角的「迭代分支」组件中,点击「创建迭代分支」选项,建立一个新的迭代分支以开启迭代相关工作。

图片

在迭代分支中设计 API

Apifox 的迭代分支功能仅覆盖迭代中修改、新增部分的内容。因此,新的迭代分支中内容为空,要自己选择需要修改和新增的内容放入迭代分支中。

图片

导入的资源会跟主分支有明显的关联标识,包括接口、接口用例、数据模型等。如果是在迭代分支内新创建的资源,则无关联标识。

图片

在设计 API 的过程中,你也可以对某个与主分支有关联关系的迭代分支资源上,进行单个资源的对比,查看这个资源与主分支的具体差异。

图片

在迭代分支中测试 API

「自动化测试」功能也支持在迭代分支中进行操作,你可以新建「测试场景」,或者从主分支导入已有的「测试场景」。

图片

导入的测试场景,在目录树中,你可以看到这些导入资源与主分支中的资源有明显的关联标识,类似于「接口管理」中的资源标识。

图片

在迭代分支中,可以像在主分支中一样编排测试场景。由于测试场景可能涉及到迭代分支和主分支中的接口,系统会用「分支图标」来区分这些测试步骤使用的是迭代分支还是主分支中的资源。

图片

当你点击查看这些步骤的详细信息时,也能看到它们关联的资源属于哪个分支。

图片

当分支中相关的接口、测试场景被设计、编排好以后,就可以对其进行测试。

对于自动化测试,在测试时会根据步骤中标识的资源来源来使用相应的数据。如果测试步骤标识为使用迭代分支的资源,那么测试将使用迭代分支中的数据;如果标识使用主分支的资源,测试将使用主分支中的数据。

图片

合并迭代分支

在迭代分支中完成 API 开发并成功上线后,可以将这些变更合并到主分支中,合并的内容可以是部分或全部接口的更改。

合并入口位于目录树右上角「分支组件的下拉菜单」中,也可以在接口管理的目录树下方看到「合并到主分支」按钮。

图片

在接口管理中,点击「合并」按钮会打开合并总览的弹窗。你可以在弹窗中查看当前迭代分支与主分支之间的修改资源或所有资源,并且可以选择合并后如何调整资源在主分支中的状态(比如开发中、测试中、已发布等状态)

图片

点击目录树上的资源,可以展开查看其详细内容,帮助决定是否合并,不同类型的资源会有不同的合并逻辑。

图片

合并完成后,会弹出提示,显示实际改动的主分支资源。

图片

在主分支中查看、撤销合并

在主分支的「接口管理」中,通过查看资源的历史记录,可以看到最近合并操作带来的变更,并且可以看到是从哪个分支合并而来的。

图片

你可以查看具体的修改内容,并与其他版本进行比较,该历史记录功能方便你追踪变更历史,并在需要时进行内容回滚。

图片

归档、恢复、删除分支

分支合并后,你可以通过「项目设置 -> 迭代分支」进入迭代分支的管理页面。在管理页面中,你可以查看项目中所有的迭代分支列表及其统计数据,还可以对这些分支进行各种操作,包括迭代分支的归档、恢复与删除。

图片

分支操作的消息通知

迭代分支的操作发生变更时可以触发消息通知,其结果可以发送给第三方应用,比如飞书、钉钉、企业微信等。

图片

具体需要你在 Apifox 的【项目设置 -> 通知设置 -> 外部通知】中配置通知事件,可参考这篇文章:《Apifox 中如何将「消息通知」集成到第三方应用(钉钉、飞书等)》

图片

 常见问题

Q 所有类型的接口都支持迭代分支功能吗?

目前只支持 HTTP 接口。

Q 谁可以创建一个迭代分支?

项目管理员和项目编辑者。

Q 谁可以访问迭代分支?

项目管理员、编辑者和只读成员。

Q 谁可以合并迭代分支中的更改?

项目管理员和项目编辑者。

Q 迭代分支可以合并到迭代分支吗?

目前仅支持合并到主分支,将会在后续版本中支持合并到迭代分支。

Q 在迭代分支中工作时,如果主分支中的接口也发生变更,合并后会发生什么情况?

合并后,迭代分支的更改会覆盖主分支中相同接口的变更。这意味着在主分支中对该接口的增加、删除或修改操作都会被迭代分支的内容所替代。

迭代分支后面会加一个「从主分支拉取更新内容」的功能,你可以将主分支中的最新更改拉取到迭代分支中,敬请期待!

Q 如果在迭代分支中删除了某些资源,合并到主分支时会对主分支产生什么影响?

如果删除的是整个接口、数据模型等资源,这意味着该接口、数据模型等资源与主分支不再建立关联,因此合并时主分支的对应接口、数据模型等资源不会受到影响,相当于没有改动。这是因为迭代分支的一个基本原则是仅涉及修改和新增资源,删除操作需直接在主分支中进行,迭代分支不处理删除操作。

如果迭代分支中的接口、数据模型等资源与主分支有关联,当你删除了其中的某些资源(如参数、说明等)时,合并后主分支中对应的资源也会被删除,这个操作相当于修改了迭代分支中的资源。

Q 如果在迭代分支中新建了一个与主分支接口 URL 和参数完全相同的接口,合并后会发生什么?

在迭代分支中新建的接口与主分支中的接口 URL 和参数完全相同,但它们默认没有关联。合并后,主分支将新增这条与迭代分支完全相同的接口,即使主分支中已存在相同 URL 和参数的接口。

因此,如果你要对现有接口进行升级、测试或修改,请从主分支导入该接口,以确保它们建立关联。这样,如果接口发生更改,合并后主分支中的接口也会同步更新。

Q 可以回溯和复原回之前迭代的分支内容吗?

可以。

如果你因为某些原因需要查看之前迭代的内容,可以将其从归档状态恢复成正常分支状态(注意迭代分支限额),恢复后即可在接口管理的目录树中重新访问这个分支。归档前分支内的数据会自动保留不变。如果你希望恢复分支历史内容,可以直接使用该分支再次合并到主分支完成还原。 

图片

单个资源建议在「接口管理」中直接使用「历史记录」功能来进行回溯和复原。

图片

Q 可以分享迭代分支的接口文档给其他人吗?

如果需要内部协同分享,可以通过「复制协作链接」给已加入项目的成员。目前暂不支持将接口文档对外分享,后续版本会支持。

图片

Q IDEA 插件中支持上传接口到迭代分支吗?

目前不支持,将会在后续版本中支持。

Apifox 的「迭代分支」功能优化了 API 设计与测试流程,通过创建独立的分支,团队可以在不干扰主分支的情况下进行新功能开发、Bug 修复及实验。

更多详细的功能介绍请参考帮助文档的迭代分支模块进行查看,如果有任何问题或建议,欢迎在评论区留言讨论。

如果使用中有任何问题或建议,欢迎随时在用户群反馈给我们。更多最佳实践内容,可以前往 Apifox 帮助文档查看~

相关文章:

API 的多分支管理,让 Apifox 帮你轻松搞定!

在产品迭代的过程中,对 API 的更新和维护是必然的,也是至关重要的。当产品需要引入新功能或对现有功能进行调整时,相应的 API 往往也需要进行升级或修改,这种情况在快速迭代的产品中很是常见。 然而,API 的迭代更新并非…...

线上预约陪诊平台医院陪诊系统源码就医陪护小程序APP开发

项目分析 随着医疗行业的数字化转型和人们对健康需求的日益增长,线上预约陪诊系统作为一种新兴的医疗服务模式,正逐渐受到市场的关注和认可。本文将从市场前景、使用人群、盈利模式以及竞品分析等多个角度,全面探讨线上预约陪诊系统的技术性…...

240806-在Linux/RHEL开机中自动启动bash脚本

A. 常规方法 要在Red Hat Enterprise Linux (RHEL) 中设置开机启动的bash脚本,可以使用以下方法之一: 方法1:使用/etc/rc.d/rc.local 打开/etc/rc.d/rc.local文件: sudo vi /etc/rc.d/rc.local在文件末尾添加你想要执行的bash脚…...

【多线程】乐观/悲观锁、重量级/轻量级锁、挂起等待/自旋锁、公平/非公锁、可重入/不可重入锁、读写锁

文章目录 乐观锁和悲观锁重量级锁和轻量级锁挂起等待锁和自旋锁公平锁和非公平锁可重入锁和不可重入锁读写锁相关面试题 锁:非常广义的概念,不是指某个具体的锁,所有的锁都可以往这些策略中套 synchronized:只是市面上五花八门的锁…...

31_逻辑漏洞、水平垂直越权、垂直越权漏洞测试、水平越权

概述 如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。 一般越权漏洞容易出现在权限页面(需要登录的页面&#xff0…...

css写一个按钮流光动画效果

规则说明 按钮实现一个简易的流光动画 streamer.css.pay_button{width: 281*2px;height: 104px;border-radius: 80px;color: rgba(255, 255, 255, 1);background: linear-gradient(90deg, #FFA023 0%, #FF2B87 100%);margin-bottom: 20px;font-size: 32px;position: relative;o…...

AxMath保姆级安装教程(word联用)及使用TIPS

一、软件介绍 AxMath是一款数学公式编辑器软件。它提供了一个直观的界面,使用户可以轻松创建和编辑数学公式。AxMath支持多种数学符号、方程式、函数、矩阵等的输入和编辑,并提供了丰富的数学符号库和模板,方便用户快速创建复杂的数学公式。…...

Vue-03.指令-v-on

v-on 为HTML标签绑定事件 代码演示: 在下面的代码中,在input标签中定义了一个按钮,并且使用v-on为input标签绑定了一个事件click,当鼠标点击该按钮时,会触发指定的方法handle,如果…...

接口基础知识6:详解http request body(一篇讲完常见请求体)

课程大纲 一、定义 HTTP请求体(HTTP Request body):HTTP请求消息的可选部分,仅在请求方法支持且需要发送数据时使用。 POST方法、PUT方法有请求体,GET和HEAD方法没有请求体。 请求头和请求体之间会有一个空行&#…...

Windows Server 安装Web,DHCP,DNS,FTP四大服务及其配置和监控方式

以Windows Server 2022为例 1.安装Web服务 添加角色->Web服务器勾选 添加Web服务器后会有一个interpub文件夹,其中wwwroot为网站根目录 工具->IIS->网站 ,这里可以将风险服务停掉 2.安装DHCP服务 添加角色->DHCP服务器勾选 右击IPv4->新建作用域 …...

创意指南丨VR游览沉浸式空间体验

欢迎来到我们制作的VR幻想世界。玩家的起点是一条蓝色水晶大道,让我们一起探索这个如梦似幻的境地。 在这条大道的两侧,漂浮着半透明的大水晶水母。它们轻盈地在空中飘动,仿佛在欢迎我们的到来。这条道路上方,一个个半圆环不停地…...

【iOS】—— autoreleasePool以及总结

【iOS】—— autoreleasePool以及总结 1. 什么是autoreleasePool2. autoreleasePoolPageobjc_autoreleasePoolPush方法:objc_autoreleasePoolPop方法:tokenkill()方法 3. 总结3.1 autoreleasePool的原理3.2 autoreleasePool的问题3.2.1 autoreleasepool的…...

培训第二十五天(python中执行mysql操作并将python脚本共享)

mysql下载路径&#xff1a; MySQL :: MySQL Community Downloads [root2 ~]# vim py001.pya3b4print(ab)print(a**2b**2)[root2 ~]# python py001.py 725[root2 ~]# python3>>> import random>>> random<module random from /usr/lib64/python3.6/random…...

LVS实战项目

LVS简介 LVS:Linux Virtual Server&#xff0c;负载调度器&#xff0c;内核集成&#xff0c;章文嵩&#xff0c;阿里的四层SLB(Server LoadBalance)是基于LVSkeepalived实现。 LVS集群的类型 lvs-nat &#xff1a; 修改请求报文的目标IP, 多目标 IP 的 DNAT lvs-dr &#xff…...

笔记小结:《利用python进行数据分析》之层次化索引

层次化索引 导入样例 层次化索引&#xff08;hierarchical indexing&#xff09;是pandas的一项重要功能&#xff0c;它使你能在一个轴上拥有多个&#xff08;两个以上&#xff09;索引级别。抽象点说&#xff0c;它使你能以低维度形式处理高维度数据。我们先来看一个简单的例…...

Linux的线程篇章 - 线程池、进程池等知识】

Linux学习笔记---018 Linux之线程池、进程池知识储备1、线程池1.1、池化技术1.1.1、定义与原理1.1.2、优点1.1.3、应用场景 1.2、线程池的特点与优势1.3、线程池的适用场景1.4、线程池的实现 2、进程池2.1、定义和基本概念2.2、进程池的特点与优势2.3、进程池的适用场景&#x…...

汇昌联信做拼多多运营正规吗?

汇昌联信在拼多多平台上的运营是否正规&#xff0c;是许多商家和消费者都关心的问题。随着电商行业的快速发展&#xff0c;平台运营的正规性直接关系到消费者的购物体验和商家的信誉。 一、公司背景与资质审核 明确回答问题&#xff1a;汇昌联信作为一家专业的电商运营公司&…...

240810-Gradio自定义Button按钮+事件函数+按钮图标样式设定

A. 最终效果 B. 参考代码 要通过自定义HTML按钮来触发Gradio自带按钮的 click 函数&#xff0c;你可以使用JavaScript来模拟点击Gradio的按钮。这里是一个示例代码&#xff0c;展示了如何实现这一点&#xff1a; import gradio as gr# 自定义的 JavaScript&#xff0c;用于捕…...

排序算法--快速排序

一、三色旗问题 问题描述 有一个数组是只由0&#xff0c;1&#xff0c;2三种元素构成的整数数组&#xff0c;请使用交换、原地排序而不是计数进行排序&#xff1a; 解题思路 1.定义两个变量&#xff0c;i和j&#xff08;下标&#xff09;&#xff0c;从index0开始遍历 2.如…...

springMVC -- 学习笔记

前言简介演示 ⇒ &#xff08;最简单的原理&#xff0c;开发并不这样&#xff0c;理解一下就好&#xff09;演示 ⇒ 接近真实注解开发&#xff08;好好理解一下&#xff09;重要的源码献上 Controller 讲解RequestMapper ⇒ 没啥记的&#xff0c;第一个案例看看就行了RestFul 风…...

修复本地终端(windows)连接服务器使用zsh出现乱跳的问题

目前市面上还没有发现解决方案&#xff0c;记录一下&#xff01; 1.起因&#xff1a; 在服务器配置了zsh后&#xff0c;用本地的windows去连接的时候&#xff0c;终端内容会出现乱跳&#xff0c;比如输入了一个“l”&#xff0c;后面出现多个“lll”&#xff0c;如下: ⚡ roo…...

【扒代码】regression_head.py

import torch from torch import nnclass UpsamplingLayer(nn.Module):# 初始化 UpsamplingLayer 类def __init__(self, in_channels, out_channels, leakyTrue):super(UpsamplingLayer, self).__init__() # 调用基类的初始化方法# 初始化一个序列模型&#xff0c;包含卷积层、…...

vue2 使用axios 请求后台返回文件流导出为excel

目录 步骤 1: 安装 Axios 步骤 2: 创建 Axios 实例 步骤 3: 发起请求并处理文件流 说明 步骤 1: 安装 Axios 首先&#xff0c;确保项目中已经安装了 Axios。如果没有&#xff0c;可以通过以下命令进行安装&#xff1a; npm install axios 步骤 2: 创建 Axios 实例 为了更…...

MATLAB数据可视化:在地图上画京沪线的城市连线

matlab自带的geoplot(lat,lon) 可以在地理坐标中绘制线条。使用 lat和lon分别指定以度为单位的经度和纬度坐标。 绘制京沪线所经城市线条&#xff1a; citys [116.350009,39.853928; 116.683546,39.538304; 117.201509,39.085318; 116.838715,38.304676;...116.359244,37.436…...

【AI】CV基础1

定期更新&#xff0c;建议关注更新收藏。 本站友情链接&#xff1a; OCR篇1 可变形卷积Deformable Conv opencv-python形态学操作合集 目录 仿射变换图像二阶导数本质探讨PIL通道、模式、尺寸、坐标系统、调色板、信息滤波器实现图像格式转换 OpenCV轮廓提取 仿射变换 仿射变换…...

数据结构《栈》

数据结构《栈》 1、栈的概念及结构2、栈的实现3、练习: 1、栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&…...

说一说mysql的having?和where有什么区别?

在 MySQL 中&#xff0c;HAVING 子句和 WHERE 子句都是用于过滤查询结果的&#xff0c;但它们之间有一些重要的区别。下面我将详细介绍这两个子句的区别以及它们的使用场景。 1. HAVING 子句 作用: HAVING 子句用于过滤聚合后的结果集。它通常与 GROUP BY 子句一起使用&#x…...

LeetCode45. 跳跃游戏 II

题目链接&#xff1a; 45. 跳跃游戏 II - 力扣&#xff08;LeetCode&#xff09; 思路分析&#xff1a;这属于上一题的变种&#xff0c;思路有所不同&#xff0c;要用到贪心的思想。从第一步开始&#xff0c;在可以跳跃的范围内&#xff0c;选择能够到达最远位置的点将其作为…...

算法打卡 Day19(二叉树)-平衡二叉树 + 二叉树的所有路径 + 左叶子之和 + 完全二叉树的节点个数

Leetcode 101-平衡二叉树 文章目录 Leetcode 101-平衡二叉树题目描述解题思路 Leetcode 257-二叉树的所有路径题目描述解题思路 Leetcode 404-左叶子之和题目描述解题思路 Leetcode 222-完全二叉树的节点个数题目描述解题思路 题目描述 https://leetcode.cn/problems/balanced…...

国际以太网专线 (IEPL)/国际专线(IPLC)-全球覆盖,无界沟通

中国联通国际公司产品&#xff1a;国际以太网专线 (IEPL)/国际专线&#xff08;IPLC&#xff09;—— 跨境数据传输的坚实桥梁 在全球化日益加深的今天&#xff0c;跨境、跨地域的数据传输需求激增&#xff0c;企业对数据传输的速度、安全性和稳定性提出了前所未有的高要求。中…...