API架构 在5分钟内解释完毕
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是一种使用HTTP协议的API架构风格,实现了客户端与服务器之间的无状态通信。
在REST中,资源通过URL进行标识,每个资源都有特定的端点。REST依赖于HTTP方法(如GET、PUT、POST等)来修改和创建资源。实现REST架构的API被称为RESTful API。
SOAP – 简单对象访问协议
SOAP是一种基于XML的消息传输协议。SOAP中的消息以XML文档编码,并可以从SOAP发送方传输到SOAP接收方。消息在到达接收方之前可以通过一个或多个服务传递。
SOAP和REST的主要区别在于REST是一种依赖HTTP的架构设计,而SOAP本身是一种协议,可以使用各种底层协议,如HTTP、REST等。SOAP的响应数据格式是XML。
gRPC – Google远程过程调用
远程过程调用(RPC)是一种技术,客户端可以像本地调用一样调用远程服务器上的函数。gRPC是由Google开发的开源框架。它使用协议缓冲区(proto-buffers),这是一种编写和编码结构化数据的与语言无关的方式。
协议缓冲区中的数据由gRPC编译器编译,使其具有互操作性。例如,如果客户端代码使用Java编写,服务器代码使用Go编写,那么在协议缓冲区中指定的数据与两种语言都兼容。
GraphQL
GraphQL是一种用于构建API的开源查询语言和运行时。它允许客户端通过访问单个入口点或端点来访问多个资源。特定资源不与特定的端点绑定。请求中指定的内容即为响应内容。
需要为特定查询定义强类型模式和解析器函数来执行该查询。为了修改资源,需要在GraphQL中指定变更查询。
API架构部署-最佳实践
无论你的API架构设计得多好,如果在生产环境中失败,它就没有用处。它必须根据实际情况进行交付。以下是使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的实用方法。
预览 | 产品 | 评分 | 价格 | |
---|---|---|---|---|
|
Mastering API Architecture: Design, Operate, and Evolve API-Based Systems | $45.99 | Buy on Amazon |
它还教你如何运营、配置和部署API系统。本书涵盖了从API网关、服务网格、安全性、TLS和OAuth2到演化现有系统的一切。
#2. 软件架构:REST API设计-完全指南
如果您对学习RESTful API以及如何设计它们感兴趣,course on Software Architecture这本书适合您。
它涵盖了身份验证、授权、文档化REST API以及各种性能技术,进一步优化您的API设计。它的优点是它涵盖了HTTP基础知识和Postman API测试工具。
#3. REST API设计、开发和管理
关于各种API管理平台(如Swagger、Apigee和Mulesoft)的教程是本course的重点。这门课程适用于那些想探索REST API应用并对架构感兴趣的人。
#4. 设计RESTful API:从头开始学习API设计
从头开始创建REST API是您将从本course on Designing RESTful APIs中获得的内容。请求、响应、API设计和操作是一些有用的主题。如果您是一个仍在学习REST基础知识的初学者,那么我认为您应该选择它。
最后的话
您可以根据业务目标和技术目标选择最佳的API架构,考虑集成需求、性能考虑、安全需求以及未来的可扩展性和可扩展性。
接下来,启动您的software testing career with these courses and resources。