API 设计:基础知识与最佳实践指南

liam
• 阅读 202

在这篇深入探讨中,我们将从基础开始,逐步介绍 API 设计,并探讨定义卓越API的最佳实践。

作为一名开发者,你可能已经熟悉了许多这些概念,但我将提供详细解释,以加深你的理解。

API 设计:电子商务示例

让我们考虑一个像 Shopify 这样的电子商务平台的 API,如果你不熟悉, Shopify 是一个知名的电子商务平台,允许企业建立在线商店。

在 API 设计中,我们关注的是定义 API 的 输入(比如新产品的产品详情)和 输出(比如查询产品时返回的信息)。

API 设计:基础知识与最佳实践指南

这意味着我们关注的是接口,而非底层实现。

API 设计与 CRUD:

因此,重点主要在于定义如何向用户或与您的电子商务 API 交互的系统公开 CRUD 操作。

CRUD 代表创建 (Create),读取 (Read),更新 (Update),删除 (Delete)。这些是任何数据驱动应用程序的基本操作。

API 设计:基础知识与最佳实践指南

例如,要添加新产品(创建),您需要向/api/products发送 POST 请求,其中产品详情包含在请求体中。

要检索产品(读取),您需要通过 GET 请求从/products获取数据。

对于更新产品信息(更新),我们使用 PUT 或 PATCH 请求到/products/:id,其中 id 是我们需要更新的产品的 id。

删除与更新类似;我们向/products/:id发送 DELETE 请求,其中 id 是我们需要删除的产品(删除)。

通讯协议和数据传输机制

另一部分是决定将使用的通讯协议,如 HTTP、WebSockets 等,以及数据传输机制:JSON、XML 或 Protocol Buffers。

这适用于 RESTful APIs,但我们也有 GraphQL 或 gRPC 范式。

API 范式

API 有不同的范式,每种范式都有自己的协议和标准。都可使用 Apifox 来调试。

REST(表现层状态转换)

优点: 无状态:客户端对服务器的每个请求都必须包含理解和完成请求所需的所有信息。使用标准 HTTP 方法(GET、POST、PUT、DELETE)。易于被不同客户端(浏览器、移动应用)使用。

缺点: 这可能导致数据的过度获取或获取不足——因为可能需要更多的终端来访问特定数据。

特点: 支持分页、过滤(limitoffset)和排序。使用 JSON 进行数据交换。

GraphQL

优点: 允许客户端请求他们确切需要的内容,避免过度和不足地获取数据。强类型、基于模式的查询。

缺点: 复杂查询可能会影响服务器性能。所有请求都作为 POST 请求发送。

特点: 通常即使在出错的情况下也响应 HTTP 200 状态码,错误详情在响应体中。

API 设计:基础知识与最佳实践指南

gRPC(谷歌远程过程调用)

优点: 基于 HTTP/2,提供了如多路复用和服务器推送等高级功能。使用 Protocol Buffers,这是一种语言中立、平台中立、可扩展的结构化数据序列化方式。在带宽和资源方面效率高,特别适合微服务。

缺点: 与 JSON 相比可读性较差。需要 HTTP/2 支持。

特点: 支持数据流和双向通信。适用于服务器到服务器的通信。

API 设计:基础知识与最佳实践指南

API 设计中的关系

在电子商务设置中,你可能会有像用户到订单订单到产品等关系。

API 设计:基础知识与最佳实践指南

设计端点以反昘这些关系是重要的。例如,在此场景中,GET /users/{userId}/orders应该获取特定用户的订单。

查询、限制以及 GET 请求的幂等性

常见的查询还包括用于分页的limitoffset,或用于过滤特定日期范围内产品的startDateendDate。这允许用户检索特定的数据集,而不会一次向系统或用户提供过多信息。

API 设计:基础知识与最佳实践指南

设计良好的 GET 请求是幂等的,意味着多次调用不会改变结果。

GET 请求绝不应更改数据。它们仅用于检索。

向后兼容性和版本控制:

修改端点时,保持向后兼容性很重要。这意味着确保变更不会破坏现有客户。

版本控制:引入版本(如/v2/products)是处理重大更改的常见做法。

API 设计:基础知识与最佳实践指南

在 GraphQL 的情冀下,添加新字段(v2 字段)而不删除旧字段有助于在不破坏现有客户的情况下使 API 演进。

速率限制和 CORS

设置速率限制是另一个最佳实践。这用于控制用户在一定时间内可以进行的请求数量。这对于保持 API 的可靠性和可用性至关重要。它还可以防止 API 遭受 DDoS 击。

API 设计:基础知识与最佳实践指南

通常的做法还包担设置 CORS 设置。跨源资源共享(CORS)设置对于网络安全很重要。它们控制哪些域可以访问您的 API,防止不必要的跨站点互动。

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Javascript操作DOM常用API总结
        文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认识。基本概念        在讲解操作DOM的api之前,首先我们来复习一下一些基本概念,这些概念是掌握api的关键,必须理解它们。Node类型
Stella981 Stella981
3年前
RESTful API 设计最佳实践
WebAPI近几年变得越来越火,而简洁的API设计在多后端系统交互应用中也变得尤为重要。通常,会使用RESTfulAPI来作为我们的WebAPI。本文介绍了几种简洁RESTfulAPI设计的最佳实践。使用的名词而不是动词使用名词来定义接口!(https://static.oschina.net/uploads
API 小达人 API 小达人
1年前
如何开发 RESTful、GraphQL 和 SOAP 等不同类型的 API ?
本指南将详尽探讨API开发的基本要素,包括涉及的概念、类型和协议,以及可用的最佳实践和工具。我们将从揭示API在现代软件开发中的作用开始,阐明它们如何促进不同软件组件之间的无缝通信。之后,我们将深入研究各种API类型,如RESTful、GraphQL和SOAP,并分析它们独特的特点和理想用例。接下来将讨论API设计的关键方面,重点关注API安全性、可扩展性和可维护性。我们将讨论常见的身份验证和授权机制、速率限制以及API版本控制等其他基本主题。最后,我们将介绍领先的API开发工具和框架以及文档和测试的价值,确保你具备开发高质量、高效且安全API所需的知识和资源。
API 小达人 API 小达人
1年前
优化 API 开发的 10个方法
PI应该具备高可用性、性能优越、遵循标准、明确的服务边界、SEO、用户友好设计以及可重用性。遵循这些最佳实践将确保API满足业务需求和消费者需求,从而提高采纳率。
API 小达人 API 小达人
1年前
REST API 设计最佳实践:如何正确使用 HTTP 状态码?
本文分享在设计RESTAPI时的最佳实践。关于设计优秀RESTAPI的一些建议、提示和指导,帮助您让消费者(以及开发人员)满意。我们都应该努力使API变得易于使用。无论是对于消费者,还是我们自己的开发人员同伴。希望这篇文章能帮助你学到一些技巧,并激发出构建更好RESTAPI的方法。
E小媛同学 E小媛同学
11个月前
快递物流信息订阅与推送API:实现实时追踪与通知
随着互联网的普及和电子商务的快速发展,快递物流行业逐渐成为人们日常生活中不可或缺的一部分。为了满足用户对快递物流信息的需求,许多快递公司提供了API接口,允许开发者通过编程方式订阅和推送快递物流信息。本文将介绍快递物流信息订阅与推送API的概念、应用场景以及如何使用这些API来实现实时追踪与通知。
小万哥 小万哥
11个月前
API 参考与帮助内容:一站式开发与使用者支援
API文档API文档是旨在了解API详细信息的综合指南。通常,它们包括端点、请求示例、响应类别和示例以及错误代码等信息。API文档可帮助开发人员了解API端点的具体细节,并了解如何将API成功集成到他们的软件中。文档生成工具API文档生成工具是直接从源代码
曼成 曼成
8个月前
一文教你如何在小程序中快速接入验证码短信API
在微信小程序中接入验证码短信API,可以为用户提供便捷的验证服务。本文将详细介绍如何在小程序中实现这一功能,包括UI设计、API请求以及代码实现。
E小媛同学 E小媛同学
7个月前
银行卡二要素API:构建更安全的电子商务生态系统
在数字化时代,电子商务已成为我们日常生活的一部分。然而,随着在线交易的增加,交易安全问题也日益凸显。银行卡二要素API作为一种创新的技术解决方案,正在帮助电子商务平台提升交易安全性,防范网络诈骗和金融犯罪,并确保商家遵守相关法规。本文将详细探讨银行卡二要素API的作用和重要性。