企业越来越依赖API来连接不同业务线的应用和数据、与合作伙伴集成,并提供客户体验。据TechRadar称,如今每家企业平均使用15,564个API,同比增长201%。
随着API数量持续增长,API组合的管理也日益复杂。发现并跟踪有哪些API及其所在位置,以及查找API使用文档,都变得更加困难。如果缺乏全面的API策略,API的增长速度可能会超出平台运维团队的管理能力。我们将这一问题称为API蔓延。我们曾在上一篇文章中说明了它为何会构成重大威胁。本文将详细介绍如何借助NGINX搭建API开发者门户,从而应对API蔓延。
建立API清单
归根结底,API只有得到使用才能发挥作用,这意味着API使用者需要一种查找API的方式。如果没有适当的系统,API无序扩张会使开发人员难以找到应用所需的API。即使在较好的情况下,各业务线也只是分别维护API列表,并通过工程师之间的非正式关系网在团队间共享相关知识。
应对API蔓延的首要步骤之一,是为API建立单一可信信息源。首先需要创建API清单。不过,要确保清单准确并非易事,因为随着新API不断引入、旧API逐步弃用,清单内容也在持续变化。此外,还需要找出各个环境中的所有“影子API”,即随着时间推移被遗忘、未按规范弃用或未遵循标准流程构建的API。
未受管理的API是API蔓延最隐蔽的症状之一,不仅会带来明显的安全隐患,还会产生隐性成本。如果没有准确的可用API清单,API团队就必须花时间四处查找文档。不同团队在构建类似功能时,很可能会重复投入,造成浪费。此外,如果缺乏适当的版本控制,对某个API的更改可能引发一连串代价高昂的返工,甚至导致服务中断。
自动化API发现等技术有助于识别和处理API未受管理这一表象。但要解决问题,需要消除其根本原因:流程缺陷和责任归属不清。实践中,将API清单和文档集成到CI/CD流水线,是长期确保整个API组合可见性的可行方法。这样无需在每个API上线时手动跟踪,只需识别并修复例外情况。
借助API开发者门户简化API发现
API开发者门户可以帮助简化API发现。它为API使用者提供一个集中位置,便于发现API、阅读文档,并在将API集成到应用程序之前进行试用。API开发者门户还可以作为中央API目录,提供所有权和联系信息,让所有人都能了解由谁负责维护不同服务的API。
作为我们的API参考架构<.htmla>的核心组件,高效的API开发者门户可支持以下几个关键用例:
- 简化API发现流程,将API发布到易于访问的位置,方便开发者查找API并在项目中使用
- 提供清晰且及时更新的文档,确保开发者始终可以查阅有关API工作原理的最新文档
- 确保正确的版本控制;通过支持版本控制,在引入新版API时避免导致下游应用中断
- 生成API凭据:简化接入流程,让开发者能够登录并生成用于访问API的凭据
- 试用API,让开发者在将API集成到项目之前,先在门户中试用
API策略需要涵盖API开发者门户的维护方式。您需要一种自动化、低干预的方法,无缝整合API发布、版本管理和文档编制,同时不给API团队增加额外工作。
使用NGINX为API创建单一可信来源
要实现顺畅的API发现,需要建立统一可信的信息源,让开发人员能够查找API、了解其使用方法,并将其接入项目。这意味着需要一个开发者门户和保持最新的文档。
API Connectivity Manager是F5 NGINX Management Suite的一部分,可帮助您将API发布、版本控制和文档编制直接集成到开发工作流中,使API开发者门户始终保持最新。除了便于创建用于托管API及其文档的API开发者门户外,API Connectivity Manager还支持添加自定义页面,并可根据品牌形象全面定制开发者门户。
下面介绍API Connectivity Manager如何帮助您应对一些具体用例。有关以下操作的详细说明,请参阅API Connectivity Manager文档:设置开发者门户集群和发布开发者门户。
自动生成API文档
API使用者对文档质量和详尽程度的期望,往往与忙碌的API开发人员在时间和资源有限的情况下实际能够交付的成果相去甚远。许多自行开发的文档工具无法与开发生命周期或其他工程系统集成。但这种情况并非不可改变。
NGINX 如何提供帮助:API Connectivity Manager 使用OpenAPI 规范将 API 发布到 API 网关,并在开发者门户上自动生成配套文档,从而节省 API 开发者的时间,并确保 API 使用者始终能够找到所需内容。您可以直接通过 API Connectivity Manager 用户界面上传 OpenAPI 规范文件,也可以通过 REST API 发送调用。这样便可通过 CI/CD 流水线轻松实现文档流程自动化。
要在API Connectivity Manager中发布文档,请单击左侧导航栏中的“Services”,打开“Services”选项卡。单击Workspace名称,或“新建Workspace”。
进入Workspace后,点击显示Workspace名称和说明的框下方的API Docs(截图中为example-api)。点击Add API Doc按钮,上传OpenAPI Specification文件。点击Save按钮,将文档发布到开发者门户。
图1:将OpenAPI规范文件上传到
API Connectivity Manager以创建文档
确保版本控制正确
版本变更必须始终谨慎处理。在微服务环境中尤其如此,因为许多服务可能会与同一个API交互。如果未谨慎引入新版本并停用旧版本,一项破坏性变更就可能导致数十个微服务发生级联中断。
NGINX如何提供帮助:将OpenAPI规范文件与API Connectivity Manager结合使用,可轻松对API进行版本控制。除了设置版本号外,还可以为每个版本提供文档,并管理其状态(最新、有效、已停用或已弃用)。
要发布API的新版本,请点击左侧导航栏中的“Services”。在表格中点击Workspace名称,然后在打开的页面中点击Environment名称。接下来,点击“+ Add Proxy”按钮。您可以在此上传OpenAPI规范,设置基础路径和版本以创建URI(例如/api/v2/),并输入其他重要元数据。点击“Publish”按钮,保存并发布API代理。
API的原始版本将与新版本同时保持可用,以便用户有时间逐步将其应用或服务迁移到最新版本。准备就绪后,可以完全弃用API的原始版本。图2显示了已发布并投入生产的Sentence Generator API的两个版本。
图 2:在 API Connectivity Manager 中管理活跃的 API 版本
生成API凭据
要提高API的采用率,需要尽可能简化API使用者的入门流程。用户找到所需的API后,需要通过一种安全的方式登录开发者门户并生成凭据。这些凭据可授予用户访问API功能的权限。通常,建议实施自助式工作流,让用户能够自行注册。
NGINX 如何提供帮助:API Connectivity Manager 支持开发者门户上的自助式 API 工作流,用户可自行生成用于访问 API 的资源凭据。可在门户上使用API 密钥或HTTP 基本身份验证来管理资源凭据。还可在开发者门户上启用单点登录(SSO),以保护访问安全,并允许通过身份验证的 API 使用者管理资源凭据。
要在开发者门户上快速启用SSO,请点击左侧导航栏中的“Infrastructure”。然后点击表格中的Workspace名称(在图3中,该名称为team-sentence)。
图 3:Infrastructure 选项卡中的 Workspace 列表
在“Workspace”页面的表格中,单击要配置的“Environment”名称(在图 4 中为“prod”)。
图4:Workspace中的Environment列表
在Developer Portal Clusters部分,单击当前所用开发者门户对应的…图标(位于Actions列),然后从下拉菜单中选择Edit Advanced Config。在图5中,唯一的Developer Portal Cluster为devportal-cluster。
图5:为Developer Portal Cluster选择Edit Advanced Config选项
接下来,单击左侧导航栏中的 Global Policies。要配置 OpenID Connect Relying Party 策略,请单击该策略所在行的“…”图标(位于“Actions”列),然后从下拉菜单中选择 Edit Policy。有关详细信息,请参阅《API Connectivity Manager 文档》。
图 6:配置 OpenID Connect Relaying Party 全局策略以启用单点登录
在开发者门户中试用API
衡量API策略成效的一种方法是跟踪“首次API调用用时”指标,该指标反映开发者使用您的API发送基本请求所需的时间。
我们已经明确,清晰简洁的文档是了解API的首要入口,用户可通过文档初步掌握API的使用方法。通常,开发者必须先编写新代码,将API集成到应用中,然后才能测试API请求。通过支持开发者在开发者门户中使用真实数据直接与API交互,可以帮助他们更快上手,无需为应用编写任何代码即可完成首次API调用!
NGINX如何提供帮助:为API Connectivity Manager开发者门户启用SSO后,API使用者便可在文档页面中使用API Explorer试用API调用。他们可以使用API Explorer探索API的端点、参数、响应和数据模型,并直接在浏览器中测试API调用。
图 7 展示了 API Explorer 的实际使用过程,本例中试用的是 Sentence Generator API。用户选择适当的凭据并创建请求,然后收到包含 API 实际数据的响应。
图7:在开发者门户上测试API
总结
API对贵组织至关重要。要治理和保护API,第一步是盘点所有API,无论它们位于何处。但API发现只是解决方案的一部分。还需要将API清单、文档和版本管理纳入开发与工程生命周期,从根本上解决API无序扩张问题。
开始30天免费试用 NGINX Management Suite,即可使用API Connectivity Manager、作为API网关的NGINX Plus,以及用于保护API的NGINX App Protect。
相关博客文章
NGINX Plus R26 正式发布
NGINX Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。
使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。
Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。
NGINX Plus R19 正式发布
NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。
NGINX现已正式加入F5
NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。
