API(应用程序编程接口)在多数软件体系中起到关键作用,其能够有效促进各软件或服务间的通信。
API通过展示所需功能并保护敏感或隐私数据实现封装。身份认证及授权机制可确保API免遭未授权访问或数据篡改。
软件开发商们可借助各类API,以有序且高效的方式构建、测试以及优化软件系统。API允许他们遵循一套既定规则或协议与软件系统互动。
什么是 API 网关?
在软件系统中,大多数情况下,不仅有一个 API 可以处理软件提供的所有服务,而是有一堆 API 相互协作以将数据发送到客户端。
顾名思义,API 网关充当各种 API 请求的入口点,并将它们路由到其特定的 API 服务或微服务。这会将负载从客户端发送到 API 网关,从而提高客户端性能。
例如,一个送餐应用程序有一堆微服务,包括餐厅、用户、供应商评级、送餐合作伙伴评级、路由算法、地图服务等等。因此,对于客户端(即最终用户应用程序)来说,请求单个API,然后该API网关将请求路由到相关的微服务会更有意义。
实现API网关的另一个好处是安全性。您可以设置多个身份验证和授权系统,以防止攻击者利用资源。
API 架构的构建块
API 架构有几个构建块,下面列出了其中一些:
1、API接口
API 接口清楚地定义了可以访问的方法或功能,而无需透露其实现细节。它定义了一组必须用于检索或修改资源的规则和方法。
例如,在 RESTful API 中,您可以使用 GET、PUT、POST、DELETE 等 HTTP 方法与资源进行交互。
2、路由控制器
控制器在 API 网关中起着关键作用,因为它们处理来自多个客户端的所有 API 流量,并将它们路由到相关的 API 服务。
除此之外,控制器还可以执行请求验证、响应处理、身份验证等。
3、数据访问模型
数据库中的每个资源都有特定类型的结构或形状,最好事先定义该结构以进行验证。它也称为架构。可以根据架构验证来自客户端的有效负载,然后将其添加到数据库中。
它可以防止任何无效或篡改的数据进入数据库。
API 架构的组件
- API 服务:这些服务提供对特定资源或一组资源的访问。大型应用程序需要多个 API 服务。这些服务相互分离,独立管理资源。
- 文档:API 文档对于开发人员了解 API 的有效使用及其公开的方法是必要的。文档可以包括端点列表、最佳实践、请求格式、错误处理等。
- 分析和监控:分析仪表板是一个关键组件,因为它提供了 API 流量、错误率和性能等指标,以及许多其他见解。
常用的 API 设计架构
REST – 具象状态传输
REST 是一种 API 架构风格,它使用 HTTP 协议并实现客户端和服务器之间的无状态通信。
在 REST 中,资源由 URL 标识,这些 URL 具有每个资源的特定终结点。REST依靠HTTP方法(如etc.)来修改和创建资源。实现 REST 架构的 API 称为 RESTful API。GET, PUT, POST,
SOAP – 简单对象访问协议
SOAP 是一种基于 XML 的消息传递协议。SOAP 中的消息在 XML 文档中编码,并且可以从 SOAP 发送方传输到 SOAP 接收方。可以有一个或多个服务,消息在到达接收方之前可以通过这些服务传递。
SOAP和REST的主要区别在于,REST是一种依赖于HTTP的架构设计,而SOAP本身是一种可以使用各种底层协议(如HTTP、SMTP等)的协议。SOAP 中的响应数据格式为 XML。
gRPC – Google 远程过程调用
远程过程调用 (RPC) 是一种技术,在该技术中,客户端调用远程服务器上的函数,就像在本地调用一样。gRPC 是 Google 开发的开源框架。它使用原始缓冲区(协议缓冲区),这是一种与语言无关的方法来编写和编码结构化数据。
proto-buffers 中的数据由 gRPC 编译器编译,使其具有互操作性。例如,如果客户端代码是用 Java 编写的,而服务器代码是用 Go 编写的,那么在 proto-buffers 中指定的数据与两种语言都兼容。
GraphQL
GraphQL是一种用于构建api的开源查询语言和运行时。它允许客户机通过访问单个入口点或端点来访问多个资源。特定的资源没有绑定到特定的端点。您将获得在请求查询中指定的内容。
您需要为特定查询定义强类型模式,并为该查询执行解析器函数。为了修改资源,需要在GraphQL中指定一个突变查询。
API 架构部署 – 最佳实践
无论你的 API 架构设计得多么好,如果它在生产中失败了,它就毫无用处。它必须根据真实世界的场景进行交付。以下是使 API 架构为生产做好准备的一些关键做法:
API 网关有助于有效路由 API 查询。API 网关还可以处理安全性和验证。
在发布之前,请确保您的 API 已经过全面的功能、集成和性能测试。自动化测试的框架可以帮助简化这一过程。
创建一个可扩展的 API 架构,以管理不断增长的流量需求。要根据需求动态更改 API 实例的数量,请考虑采用自动扩展技术。
考虑提供可扩展解决方案以应对不断增长的流量和客户需求的托管服务提供商。请留意负载均衡、自动缩放等功能,以及根据需要灵活分配更多资源。
确保托管服务提供商能够匹配 API 的性能规格,尤其是在需求旺盛的时期。此外,如果符合您的业务需求,请探索无服务器选项。
如何选择合适的API架构?
选择 API 架构取决于以下注意事项:
- 业务需求:分析需要使用 API 实现的业务目标,了解应用流程。
- 用例:首先问为什么需要 API 的问题将对你有很大帮助。弄清楚不同的用例将帮助您更好地设计或选择 API 架构。
- 可扩展性:同样,了解业务需求和用例将帮助您设计一个可扩展的 API 架构,该架构也具有高性能。
- 开发人员体验:确保 API 架构易于掌握,以便新的入职开发人员可以轻松理解它,而不会遇到任何麻烦。
- 安全性:API 架构最重要的方面可能是安全性。确保您的 API 架构足够安全并符合隐私法。
接下来,我们将探索学习资源,以提高您的 API 架构设计技能。
学习资源
1、掌握 API 架构:设计、操作和发展基于 API 的系统
这本书将帮助您学习 API 基础知识,并探索设计、构建和测试 API 的实用方法。
它还教您如何操作、配置和部署 API 系统。本书涵盖了从 API 网关、服务网格、安全性、TLS 和 OAuth2 到不断发展的现有系统的所有内容。
2、软件架构:REST API 设计 – 完整指南
如果您有兴趣了解 RESTful API 及其设计方式,那么这门软件架构课程适合您。
它涵盖了身份验证、授权、记录 REST API 和各种性能技术,以进一步优化您的 API 设计。它的优点在于它涵盖了 HTTP 基础知识和 Postman API 测试工具。
3、REST API 设计、开发和管理
有关各种 API 管理平台(如 Swagger、Apigee 和 Mulesoft)的教程是本课程的主要亮点。本课程适用于那些想要探索 REST API 应用程序并有兴趣构建它们的人。
4、设计 RESTful API:从头开始学习设计 API
从头开始创建 REST API 是您将从本课程中获得的关于设计 RESTful API 的内容。请求、响应、API 设计和操作是涵盖的一些有用主题。如果你是一个仍在学习REST基础知识的初学者,那么我认为你应该去做。
最后的话
您可以根据业务目标和技术目标选择最佳的 API 架构,同时考虑集成需求、性能注意事项、安全要求以及未来的可扩展性和可扩展性。
共同学习,写下你的评论
评论加载中...
作者其他优质文章