Skip to main content

发布

note

若测试环境与生产环境物理隔离,需采用「导入导出」发布方式,可参考API导入导出,导入成功后,其对应的操作方式与本文描述的操作方式完全相同。

用户可对API进行提交、发布、撤回、禁用、二次发布、编辑、删除等七种操作。

tip

API提交发布的状态和操作较多,目的是为了区分测试阶段和正式发布上线阶段,提升API的稳定性,降低编辑、测试阶段对正式API的影响。

提交与发布状态

API提交与发布

一般来说,配置完成的API至投入正常使用会经历以下状态/步骤:

  • 未提交,未发布:API生成或注册后的初始状态,支持“编辑、提交”操作。
  • 提交:将API提交至API网关,可使用测试URL对API进行测试。
  • 发布:一般在测试成功后使用,API发布成功后将在API市场可见,API申请者可进行申请,申请步骤详见API申请
  • 撤回:“已提交”的API支持撤回,撤回后不可使用第三方工具对API测试,可以对API进行编辑修改。
  • 禁用:“已发布”的API支持禁用,禁用后该API在API市场不可见,不对外提供服务。
  • 启用:禁用后的API支持“启用”操作,启用后该API可正常使用禁用前的版本。
  • 二次发布:“已提交、已发布”的API支持二次发布,二次发布表示用“已提交”的新版本覆盖目前正常使用的“已发布”版本。发布成功后,在API市场中可对外提供服务。
服务编排状态对API可执行操作的影响

为保证服务编排的正常使用:

  • 服务编排为“已提交”时,其下API节点不可撤回。

  • 服务编排为“已发布”时,其下API节点不可禁用。

  • 如需修改API节点内容,需首先单独撤回服务编排,节点在多个服务编排中引用则需撤回所有的服务编排。

  • 如需禁用API节点,需首先禁用服务编排,节点在多个服务编排中引用则需禁用所有的服务编排。

  • 若需删除API节点,需首先单独删除服务编排,节点在多个服务编排中使用则需删除所有的服务编排。

URL的组成元素

API平台的调用URL有几类元素组成,平台全局配置的hostport、默认路径/api/gateway以及API名称(API名称只能由字母、数字、下划线组成),但是在API测试阶段与正式发布至API市场的URL略有不同,且本平台支持自定义部分URL,下面详细说明:

正式发布URL

一般情况下,从API市场申请/审批通过后,申请者可在「API管理-我的API-API申请」菜单,进入「已审批」Tab,点击某个API详情,可在详情页面中查看调用URL,当API已经发布至API市场且当前用户对该API有权限期间,在发布内容中显示正式url和用户申请的api token,否则两者均不展示这是默认状态下的URL模式,例如:

http(s)://host:port/api/gateway/api_name

① http(s)://host:port 平台部署后的全局性配置,只能在配置文件统一修改,注意修改该参数可能导致应用端调用地址的全局性改变。
②(s) 并不是说URL中包含括号,而是说本平台可支持HTTPS或HTTP两种方式,若需要HTTPS加密传输,则需要自行准备安全证书。
③ /api/gateway 平台默认的拼接路径,不可配置,不可修改。
④ /api_name API名称,在创建API时指定,编辑状态下可修改。

测试URL

在「API管理」中完成编辑,点击「提交」之后,系统自动生成测试URL,测试URL的生成规则如下:

http(s)://host:port/api/gateway/test/project_id/api_name

① /test 相比正式发布URL,测试URL在/gateway后面增加了/test元素,增加/test为默认规则,不可修改。
② /project_id project_id为当前项目的标识,可在「项目管理」页面查看(项目创建后不可修改),注意项目标识仅在测试URL中体现,正式调用时不会体现。
info

提交后才有测试URL

自定义API path

在创建API时维护的「API path」,可参与到URL拼接中,如下图所示,在创建/编辑API时,填写API path填写为/user/active

image-20220628215610346

其在API提交后,生成的URL如下:

http(s)://host:port/api/gateway/test/project_id/user/active/api_name

① 用户自定义的 /user/active 拼接在project_id和API名称之间

正式发布后,生成的URL如下:

http(s)://host:port/api/gateway/user/active/api_name

① 用户自定义的 /user/active 拼接在gateway和API名称之间

由API目录path自动拼接

请谨慎修改API目录path

若此API目录下已有正式发布的API,修改API path将会导致调用URL立即改变,可能导致调用方的大量错误。

场景

在某些情况下,用户希望强化API以类目的方式进行管理,也希望根据API所在的目录来自动形成URL,例如:

📁API管理
📁用户域——(/user)
📁基本信息——(/user/basic)
🔌user_info
📁标签(/tag)
📁商品域(/prod)
📁订单数据(/prod/order)
📁库存数据(/prod/stock)
  • API管理为根目录,不参与URL拼接

  • API名称为user_info,当用户将此API放在用户域/基本信息目录下,希望自动拼接/user/basic至此API的URL中

note

API类目的path不支持按层级拼接。示例中的:

📁用户域——(/user)

📁基本信息——(/user/basic)

配置时,不能在「基本信息」文件夹只维护 /basic一段,而是需要维护完整的 /user/basic,系统不会将各层级的目录元素自动拼接。

操作

Step1:维护目录标识

首先需维护每个目录对应的标识,进入「API管理-API管理-API」菜单,在左侧的「类目管理」中,Hover在API类目的某个节点上,点击...扩展菜单中的「编辑」如下图所示:

image-20220628224707124

在弹窗中维护「默认API path」信息,这里的API path只支持2层。

image-20220628224320289

Step2:使用API目录path

创建/编辑API时,在「API path」勾选「默认值」,系统将自动按照API所在目录拼接URL,通过API目录path的URL与手动填写API path的生成规则完全相同。其在上述示例中,API提交后的测试URL为:

http(s)://host:port/api/gateway/test/project_id/user/active/user_info

注册API

注册API虽然涉及到第三方URL,但是统一注册至本平台后,并不会暴露原始地址,对外暴露的URL与向导模式、脚本模式生成的URL拼接规则相同。

发布API至其他项目

该功能仅支持注册API与生成API,当需要将当前项目的API发布到其他项目时,可以实现API的快速迁移,原理上与导入API相同。与API导入的最大区别在于,导入导出场景存在一定的局限。当测试项目与生产项目之间存在网络隔离时,发布API至目标项目就可以完美适配该场景。

发布流程:

  • 1.创建测试和生产项目
  • 2.在测试和生产项目中分别引入数据源,该数据源在数据源中心进行统一维护.
  • 3.建立绑定(发布项目绑定,测试项目与正式项目数据源映射配置)
  • 4.发布api

操作

首先,进入项目管理界面,点击“立即绑定”按钮。这将允许我们绑定需要发布到的目标项目,从而实现跨项目发布的目的。

绑定

绑定发布目标后,需要确认两个项目是否都拥有相应的数据源(用于创建API)。要发布成功,发布目标所在的租户必须包含所需的数据源。如果没有该数据源,需要切换到发布目标所在的租户,在数据源中心导入相应的数据源并进行映射配置。

映射配置

映射配置完成后我们回到API管理中,选中我们需要发布的api点击发布至目标项目。

发布至目标项目

API描述以及API包名称可有自己来定义。定义为自己想要说明的即可。

发布至目标项目提交界面

对于一个发布的api存在以下几种状态

  • 查看:点击查看可查看包内的API信息包括:发布包的名称,描述,目标租户,目标项目及现在API基本信息和所处于的状态。

  • 导出:点击导出,可以将API导入到本地以压缩文件的形式进行保存。(主要以json文件形式导出)

  • 删除:与API注册一致

  • 发布:点击发布,可以将API发布至目标项目。发布状态变化为发布成功。首次发布时目标项目内API的状态为未提交和未发布状态。注:API提交后才可进行发布,发布后,目标项目API token与原项目API token不同。配置会发生改变,因为token会跟随userId和apiId。生成token长度不固定。因为aes加密的时候,正式api是拼接的格式,随机码是0 -10000,随机码不同会导致aes的加密的结果随机在16 -32位

点击发布后,发布状态由待发布变为发布成功即为操作成功。

发布状态

  • 发布失败:

    1.未进行映射配置时会出现以下错误,需在数据源中心进行映射配置

    2..跨项目发布仅支持生成API和注册API

    异常:对应的数据源未配置目标数据源,请前往【数据源管理】页面进行配置
    异常:跨项目发布api只支持生成api和注册api

HTTPS

本平台可支持HTTPS方式对外提供API,需客户自行准备HTTPS证书。