什么是API?
API代表一个 应用程序接口. API 表示软件组件、它的操作、输入、输出和底层类型。 但是如何用通俗易懂的英语解释 API? API 充当信使,从应用程序传输您的请求并将响应返回给您。
例如1: 当您在线搜索航班时。 您与航空公司的网站互动。 该网站详细说明了该特定日期和时间的座位和航班费用。 您可以选择用餐或座位、行李或宠物要求。
但是,如果您没有使用航空公司的直接网站,或者使用的是结合了许多航空公司数据的在线旅行社。 为获取信息,应用程序与航空公司的 API 进行交互。 API 是将数据从旅行社网站获取到航空公司系统的接口。
它还需要航空公司的响应并立即返回。 这促进了旅行服务和航空公司系统之间的交互——预订航班。 API 需要一个用于例程、数据结构、对象类和变量的库。 例如,SOAP 和 REST 服务。
例如2: Best Buy 通过其网站提供“每日特价”特价。 同样的数据在其移动应用程序中。 该应用程序不担心内部定价系统——它可以调用每日交易 API 并询问,特价是多少? Best Buy 以应用程序向最终用户显示的标准格式响应所请求的信息。
Example3: 社交媒体的 API 至关重要。 用户可以访问内容并将他们跟踪的帐户和密码数量保持在较低水平,这样他们就可以让事情变得简单。
- Twitter API:与大多数 Twitter 功能交互
- Facebook API:用于支付、用户数据和登录
- Instagram API:标记用户、查看热门照片
REST 和 SOAP API 怎么样?
SOAP 和 REST的 使用 API 消费服务,称为 Web API。 Web 服务不依赖于任何先验知识信息。 SOAP 是一种与平台无关的轻量级 Web 服务协议。 SOAP 是一种基于 XML 的消息传递协议。 与 SOAP Web 服务不同,Restful 服务使用 REST 架构,专为点对点通信而构建。
网络服务
- SOAP Sender——创建和传输消息。
- SOAP Receiver – 获取并处理消息。
- SOAP 中介 - 接收和处理标头块。
RESTful 网络服务
Representational State Transfer (REST) 涉及客户端和服务器之间的关系以及状态如何处理。 Rest 架构,一个 REST Server 提供对客户端的资源访问。 Rest 处理读取和修改或写入资源。 统一标识符 (URI) 标识包含文档的资源。 这将捕获资源状态。
REST 比 SOAP 架构更轻。 它解析 JSON,这是一种人类可读的语言,可以实现数据共享和更易于使用数据,而不是 SOAP 架构使用的 XML。
设计Restful Web Service有几个原则,分别是:
- 可寻址性——每个资源都应该至少有一个 URL。
- 无状态——Restful 服务是一种无状态服务。 请求独立于服务过去的任何请求。 HTTP 是一种无状态协议。
- 可缓存 – 标记为可缓存存储在系统中并在将来重用的数据。 作为对相同请求的响应而不是产生相同的结果。 缓存约束使响应数据标记为可缓存或不可缓存。
- 统一接口——允许使用通用和标准化的接口进行访问。 使用已定义的 HTTP 方法集合。 遵守这些概念可确保 REST 实现是轻量级的。
休息的优势
- 使用更简单的消息格式
- 提供更强的长期效率
- 支持无状态通信
- 使用 HTTP 标准和语法
- 数据可作为资源使用
休息的缺点
- 不符合 Web 服务标准,例如安全交易等。
- REST 请求不可扩展
REST 与 SOAP 比较
SOAP 和 REST Web 服务之间的差异。
SOAP 网络服务 | 休息网络服务 |
与 REST 相比,需要大量输入负载。 | REST 是轻量级的,因为它使用 URI 作为数据形式。 |
SOAP 服务的变化通常会导致客户端代码发生重大变化。 | 客户端代码不受 REST Web 配置中服务更改的影响。 |
返回类型始终是 XML 类型。 | 提供关于返回数据形式的多功能性。 |
基于 XML 的消息协议 | 架构协议 |
在客户端需要一个 SOAP 库。 | 通常在 HTTP 上使用不需要库支持。 |
支持 WS-Security 和 SSL。 | 支持 SSL 和 HTTPS。 |
SOAP 定义了自己的安全性。 | RESTful Web 服务从底层传输继承安全措施。 |
API 发布政策的类型
API 的发布政策是:
私人发布政策:
API 仅供公司内部使用。
合作伙伴发布政策:
API 仅适用于特定的业务合作伙伴。 公司可以控制 API 的质量,因为可以控制谁可以访问它。
公开发布政策:
API 供公众使用。 发布政策的可用性向公众开放。 示例:Microsoft Windows API 和 Apple 的 Cocoa。