什么是接口API

API是构建应用程序的关键,分为WebAPI、公共API、合作API、私有API和复合API。常见的API协议有REST、RPC和SOAP,各自有其特点和适用范围。REST流行于公共API,简单易用;SOAP适合复杂数据交换,安全性强;RPC则适用于简单调用。选择API应考虑文档、易用性、稳定性和安全性。
摘要由CSDN通过智能技术生成

概念

Application Programming Interface,简称:API, 是用于构建应用程序软件的一组子程序定义,协议和工具。一般来说,这是一套明确定义的各种软件组件之间的通信方法。 API允许大量不相关的软件产品与其他软件和数据集成和互操作。API还允许开发人员利用丰富的其他开发人员的API向软件添加特性和功能。今天的许多企业、移动和网络软件都依赖于广泛的API。
程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。

Web API

What

web API可以使用HTTP协议在web上访问。它是一个允许开发人员创建和开发基于http的RESTful服务的框架。开发人员可以使用不同的技术构建web API,包括Java和ASP.NET。

Types

web服务中常用的API有四种不同类型:公共的、合作的、私有的和组合的。在这种情况下,API“类型”表示预期的使用范围。

  1. 公共API 公共API是开放的,可供任何外部开发人员或企业使用。如果企业制定的业务策略涉及与其他企业共享其应用程序和数据,那么企业将开发并提供公共API。这些也称为开放api或外部api。

  2. 合作API 合作API仅供特定选择和授权的外部开发人员或API使用者使用,是促进企业对企业活动的一种手段。合作伙伴拥有访问此类API的明确权利和许可。出于这个原因,合作API通常包含更强的身份验证、授权和安全机制。企业通常也不会直接将这些API货币化;合作伙伴按服务付费,而不是通过使用API付费。

  3. 内部API 内部或私有API仅用于在企业内连接业务内的系统和数据。内部API传统上表现出较弱的安全性和身份验证——或者根本没有——因为API是为内部使用而设计的,并且假定这种安全级别是通过其他策略实现的。然而,随着威胁意识的增强和法规遵从性需求对组织的API策略的影响越来越大,这种情况正在发生变化。

  4. 复合API 复合API通常将两个或多个API组合在一起,以生成一系列相关或相互依赖的操作。复合API有助于处理复杂或紧密相关的API行为,有时可以提高单个API的速度和性能。

API协议和体系结构(设计风格分类)

API交换命令和数据,这需要明确的协议和架构——管理API操作的规则、结构和约束。今天,有三类API协议或体系结构:REST、RPC和SOAP。这些可能被称为“格式”,每一种都有独特的特征和权衡,用于不同的目的。

  1. REST(基于http协议——超文本传输协议)
    具象状态传输(representational state transfer, REST)体系结构可能是构建 API最流行的方法。REST依赖于分离API前端和后端的客户机/服务器方法,并在开发和实现方面提供了相当大的灵活性。REST是无状态的,这意味着API在请求之间不存储数据或状态。REST支持缓存,用于存储慢速或非时效性 API的响应。REST API,通常被称为RESTful API,也可以直接通信或通过API网关和负载均衡器等中间系统进行操作。

  2. RPC(基于dubbo(thrift)协议的接口,接口地址为 dubbo:.//.)
    远程过程调用(RPC)协议是一种发送多个参数并接收结果的简单方法。RPC API调用可执行的操作或流程,而REST API主要交换数据或资源,如文档。RPC可以使用两种不同的语言,JSON和XML进行编码;这些API分别被称为JSON-RPC和XML-RPC。

  3. SOAP(==基于web service协议,地址一般为:https:// …?wsdl ==)
    简单对象访问协议(SOAP)是由万维网联盟(World Wide Web Consortium)定义的一种消息传递标准,广泛用于创建Web api,通常使用XML。SOAP支持internet上广泛的通信协议,如HTTP、SMTP和TCP/IP。SOAP也是可扩展的和与风格无关的,这使得开发人员能够以不同的方式编写SOAP API,并轻松地添加特性和功能。SOAP方法定义了如何处理SOAP消息、包含的特性和模块、支持的通信协议以及SOAP消息的构造。

与REST的灵活性相比,SOAP是一个高度结构化、严格控制和定义清晰的标准。例如,SOAP消息最多可以包含四个组件,包括信封、消息头、消息体和错误——后者用于错误处理

比较API协议

API格式的选择可以对API的成功和采用产生深远而持久的影响。组织必须根据必须交换的信息的复杂性、信息所需的安全级别以及这些交换所需的速度或性能来选择最合适的格式。
例如,更简单的格式可能更容易编码和维护,但可能无法提供企业采用者所需的安全级别。更复杂的格式可能会提供这种安全性,但会给采用者带来更高的学习曲线,或者需要开发人员进行更多的错误修复和工作。权衡很少是简单的,但是对于主要的API格式有一些共同的考虑。

考虑REST和SOAP。这两种格式都是为了连接应用程序而设计的,主要利用HTTP协议和Get、Post和Delete等命令。两者都可以在请求和响应中使用XML。然而,SOAP在设计上依赖于XML,而REST也可以使用JSON、HTML和纯文本。SOAP通过严格的规则进行了标准化,而REST则允许其规则的灵活性,并由体系结构进行治理。SOAP是从远程过程调用构建的,而REST是基于资源的

因此,REST和SOAP都交换信息,但是以非常不同的方式进行。当企业需要严格的安全性和明确定义的规则来支持更复杂的数据交换和调用过程的能力时,就使用SOAP。开发人员经常将SOAP用于内部API或合作API。REST用于相对简单数据的快速交换。REST还可以支持更大的可伸缩性,支持大型且活跃的用户群。这些特性使得REST在公共API中很流行,比如在移动应用程序中。

RESTSOAP
与XML, JSON, HTTP和纯文本一起工作与XML一起工作
松散 灵活严格、明确定义的规则
中等安全高级安全
与数据打交道与流程处理或者操作一起
低带宽,高可伸缩性更多带宽,但可伸缩性有限

关于何时使用RPC的讨论稍微简单一些。与SOAP类似,RPC是高度结构化的,用于能够调用流程的相对简单的 API。接下来的选择是使用JSON还是XML——同样,这取决于API的预期用途、交换的信息类型和所需的安全级别。

JSON是更简单的语言,JSON- RPC只支持字母数字数据或文本交换,安全性很低。XML-RPC处理更广泛的数据,包括文本、图像、图形、图表等。因此,XML提供了优于JSON的文档处理能力,并提供了更好的安全特性。这两种方法都支持各种编程语言,包括Python、Java和PHP。

基于RPC的API对于企业级API来说是一个糟糕的选择,因为它们的数据类型支持有限,安全性也有限。但是,RPC可能适用于一些内部复合API。例如,JSON-RPC API可以在不等待响应的情况下进行调用,并支持多个可以异步处理的同时调用。这里的重点是选择最适合业务需求和必须连接的应用程序的API类型。

API协议适用场景
SOAP内部API或合作API
REST公共API
RPC复合API

选择正确的API

无论是在软件项目中选择一个现有的API,还是从头开始构建一个新的API,开发人员都应该考虑或包括以下几个重要因素:

  1. 清晰完整的文档。API是软件,像任何软件一样,它们需要全面的文档,为开发人员提供如何指导、参考用法和示例用例,旨在帮助开发人员快速成功地应用API。

  2. 简单方便。保持API的简单性,建立一个获取API的简单方法——例如下载和帐户注册——并确保可靠和知识渊博的API支持,可以解决任何开发人员的问题。否则,该API将难以集成或难以集成,开发人员将放弃它,而选择更容易采用的其他API。

  3. 易于使用。一个好的API很容易使用,具有合理和直观的调用结构。即使是最强大、最全面的API,如果它使用了繁琐且不一致的调用和响应,也会被忽略。简单、一致、清晰和向后兼容性——包括明确的弃用——是一个好的API的标志。

  4. 稳定可靠。好的API的开发就像任何其他软件一样,它应该包括全面的错误测试和可伸缩性和性能的明确指标,比如API每秒可以处理多少客户端-服务器调用和其他相关因素。性能不一致或不可靠的有bug的api很快就会被开发人员抛弃。通过第三方提供商使用的api必须是高可用性和健壮性的。

  5. 安全。API必须通过明确的身份验证来支持安全性——只有授权用户才能使用API。此外,通过API交换的任何数据都应该加密或以其他方式防止窥探和窃取。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值