与我们的许多客户一样,您可能会发现API解决方案的概念和术语相当令人生畏。在本博客中,我们将讨论关键的API概念,并探讨API管理与API网关之间的关系。

我们分如下几个方面来分析

内部接口-Internal APIs

内部接口只向企业内的其他应用程序(及其开发人员)公开,而不向外部用户公开。内部接口帮助解锁数据,并促进企业内功能单元之间的协作。下面是一个示例:在向客户提供帮助之前,企业的技术支持团队需要确定客户是否拥有有效的支持合同。这些信息已经存储在企业的客户关系管理(CRM)系统中,比如Salesforce。客户的应用程序调用CRM的内部API,而不是在自己的数据库中复制信息。

外部接口-External APIs

外部接口向企业外部的用户公开。它们提供了与第三方开发人员建立伙伴关系的方法,以及您的供应商、分销商、经销商、甚至客户的整个业务生态系统。外部接口还使企业能够使用创新的业务模型生成新的收入来源。谷歌就是一个例子。许多第三方网站和应用程序都嵌入了谷歌地图,以帮助终端用户定位位置或获取方向。最终用户访问地图不需要花费任何东西,但是在一定数量的点击之后,谷歌会为每个接口调用向站点或应用程序收费。

定义和发布-Definition and publication

接口管理解决方案提供了一个直观的接口来定义有意义的接口,包括基本路径(URL)、资源和端点。

资源是任何接口定义的基础,它们是接口执行操作所依据的信息的抽象。 示例资源是文档和客户id。调用API来检索此信息。 端点指定资源的位置。接口有一个附加端点路径的基本URL。所有接口点都相对于基本URL。 例如,在接口端点https://open.wuxiongwei.com/v1/inventory/中,/v1是基本路径,/inventory是资源。

接口管理解决方案使接口者能够将接口发布到各种环境,如生产、测试或开发。这确保了每个环境的一致性,并防止了错误配置。这些解决方案还自动创建新的接口和修改现有接口。

接口网关-API gateway

如前所述,接口网关保护后端和接口消费者之间的通信。接口网关功能包括验证接口调用、将请求路由到适当的后端、应用速率限制来防止系统过载或减轻DDoS攻击、卸载SSL/TLS流量以提高性能、以及处理错误和异常。

微网关-Microgateway

许多解决方案都有一个集中的、紧密耦合的数据平面(接口网关)和控制平面(接口管理工具)。所有接口调用都必须通过控制平面,这增加了延迟。这种体系结构方法中的接口网关在处理分布式环境中的流量时效率很低(例如微服务环境中的服务内流量或处理物联网流量以支持实时分析)。因此,为了管理接口使用者和提供者非常接近的流量,解决方案的供应商引入了一个称为微网关的附加软件组件来处理接口调用。

接口分析-API analytics

随着您的接口变得流行,您需要确保它们为您的接口消费者提供价值,同时满足您的业务目标。这就是接口分析变得至关重要的地方。接口管理解决方案通过可视化(例如仪表板和报告)来提供接口度量和使用情况的关键洞见,并通知您(作为示例)哪些接口使用得最多和最少,接口流量如何随时间变化,以及哪些开发人员是接口的主要消费者。接口分析使接口业务所有者(接口产品经理)能够深入了解接口程序的性能。

分析对于故障排除也很重要。接口管理解决方案在每个接口的基础上提供了对操作指标的深入可见性。这些度量使基础设施和操作团队能够监视和排除性能和安全问题。下面是一些分析可以帮助回答的问题:

我所有的接口网关实例的状态和正常运行时间是什么? 什么时候接口会变慢? 接口什么时候发生HTTP错误?

接口安全-API security

安全性是接口基础设施的一个关键方面。如果没有健壮的安全性,任何人都可以访问您的接口和数据,并通过调用对不安全接口的调用引入恶意行为。接口安全需要以下要素:

身份验证

身份验证是可靠地确定调用者身份的过程。接口授权码是验证和标识希望访问接口的调用者的标准机制。接口管理解决方案为接口提供者提供一个接口来生成接口密钥,然后可以与第三方开发人员共享这些密钥,以便在调用接口调用时使用。OAuth是一种广泛使用的认证机制。

授权

授权是指确定授予用户哪些特权或访问级别的过程。授权用户的一种方法是通过JSON Web令牌(JWTs)。JWTs是断言声明的访问令牌(JWT中表示个人特权的术语)。例如,客户端应用程序显示的JWT可能包含一个声明,允许访问一个特定的资源。如果客户机应用程序试图访问任何其他资源,将返回一个HTTP 403禁止错误。

基于角色的访问控制(RBAC)

RBAC指定义具有某些特权的用户角色。例如,基础设施和操作人员通常不负责创建和发布接口,而只负责监视和故障排除。因此,他们被分配只有这些特权的角色。类似地,只有接口产品经理被分配了访问接口分析的角色。

速率限制

速率限制是指对调用者在规定的时间内可以发出的请求数量施加限制(例如,每秒10,000个请求)。速率限制可以防止后端系统过载,并有助于减轻DDoS攻击。接口管理解决方案提供了定义速率限制的接口,然后由接口网关强制执行。速率限制还使您能够提供分层的服务级别(例如,黄金客户端每秒可以发出10,000个请求,而白银客户端每秒可以发出5,000个请求)。

开发人员门户-开发者中心-Developer portal

开发人员门户是一个在线网址,您可以在其中发布资源,以方便接口使用者的快速浏览,比如外部接口目录、全面文档和示例代码。开发人员门户还允许第三方开发人员注册他们的应用程序,并获得接口密钥。一些解决方案还为使用您的接口的开发人员之间的交互提供了一种机制。设计良好的开发人员门户对于接口程序的成功至关重要。

其实如果设计的是一个开放平台,这样管理接口已经够用来,但是我们所处的环境是,很多企业内部有自己的接口管理系统,有些可能在rap维护,有些可能在yapi维护,有些功能完全没有维护接口,只有代码。这样的情况下,如果要帮助类似企业管理接口,以上的通用开放平台能力就比较受限,下面讨论一下可能会扩展到的点。

统一管理的接口

企业在rap,ypai,postman等平台维护了接口,这些接口需要能很方便的录入或导入到我们的接口管理平台中。

没有管理接口,只有代码

这种情况下,没有一劳永逸的方法,至少要把现有系统中您希望管理的接口整理出来,维护到excel或是markdown等文件媒介中,我们的接口管理平台需要有能力快速高效的导入维护这些接口。

swagger-新互联网公司,swagger维护接口

当下,很多互联网公司都使用swagger维护接口,swagger确实是一个很好的工具。开放人员只要在代码中录入一些注释,就可以一键生成接口文档,非常便利。

soap- 企业主要通过wsdl提供接口

往前看5年,10年,绝大部分公司以wsdl的方式接接口,wsdl有它独到的安全能力。那么碰到这样的企业,接口要如何维护呢,答案是我们要把wsdl转换成rest才能统一放入接口管理平台来维护。

物联网-没错

IOT是大势所趋,CoAP和MQTT是常用的协议形式,我们怎么才能一并维护呢。对的,您没想错,就是和soap接口一样,通过转换后统一接入接口管理平台。当然转换后,效率肯定是会变差了,CoAP和MQTT设计出来的目的就是提高性能和响应速度。其实只要将现有接口统一维护之后,后续是有机会把 CoAP->rest 转换成 CoAP->rest->CoAP(MQTT) 最后变成CoAP->CoAP(MQTT)