当前位置:首页 > 科技  > 软件

API设计:从基础到优秀实践

来源: 责编: 时间:2024-01-15 09:21:56 342观看
导读在这次深入探讨中,我们将深入了解API设计,从基础知识开始,逐步进阶到定义出色API的最佳实践。作为开发者,你可能对许多这些概念很熟悉,但我将提供详细的解释,以加深你的理解。API设计:电子商务示例让我们考虑一个类似Shopify

skP28资讯网——每日最新资讯28at.com

在这次深入探讨中,我们将深入了解API设计,从基础知识开始,逐步进阶到定义出色API的最佳实践。skP28资讯网——每日最新资讯28at.com

作为开发者,你可能对许多这些概念很熟悉,但我将提供详细的解释,以加深你的理解。skP28资讯网——每日最新资讯28at.com

API设计:电子商务示例

让我们考虑一个类似Shopify这样的电子商务平台的API。如果你不熟悉Shopify,它是一个著名的电子商务平台,允许企业建立在线商店。skP28资讯网——每日最新资讯28at.com

在API设计中,我们关注定义API的输入(比如新产品的产品详情)和输出(比如当某人查询产品时返回的信息)。skP28资讯网——每日最新资讯28at.com

skP28资讯网——每日最新资讯28at.com

这意味着我们关注的是接口而不是低级实现。skP28资讯网——每日最新资讯28at.com

API设计和CRUD:

因此,焦点主要是定义CRUD操作如何向使用您的电子商务API的用户或系统公开。skP28资讯网——每日最新资讯28at.com

CRUD代表Create、Read、Update、Delete。这些是任何数据驱动应用程序的基本操作。skP28资讯网——每日最新资讯28at.com

skP28资讯网——每日最新资讯28at.com

例如,要添加新产品(创建),您将通过POST请求发送到/api/products,其中产品详情包含在请求体中。skP28资讯网——每日最新资讯28at.com

  • 要检索产品(读取),您需要使用GET请求从/products获取数据。
  • 要更新产品信息(更新),我们使用PUT或PATCH请求到/products/:id,其中id是需要更新的产品的id。
  • 删除类似于更新;我们通过DELETE请求到/products/:id,其中id是需要移除的产品。

另一部分是决定要使用的通信协议,比如HTTP、WebSockets等,以及数据传输机制:JSON、XML或Protocol Buffers。skP28资讯网——每日最新资讯28at.com

这适用于RESTful API,但我们还有GraphQL或gRPC范例。skP28资讯网——每日最新资讯28at.com

API范例

API有不同的范例,每个范例都有其自己的一套协议和标准。skP28资讯网——每日最新资讯28at.com

1.REST(表述性状态转移)

  • 优势: 无状态:客户端到服务器的每个请求都必须包含理解和完成请求所需的所有信息。使用标准的HTTP方法(GET、POST、PUT、DELETE)。易于被不同客户端(浏览器、移动应用)消费。
  • 缺点: 这可能导致数据的过多或过少获取-因为可能需要更多的端点来访问特定的数据。
  • 特性: 支持分页、过滤(**limit**、**offset**)和排序。使用JSON进行数据交换。

2.GraphQL

  • 优势: 允许客户端请求确切需要的内容,避免过多或过少获取。基于强类型模式的查询。
  • 缺点: 复杂的查询可能会影响服务器性能。所有请求都以POST请求发送。
  • 特性: 通常以HTTP 200状态码回应,即使在错误的情况下也是如此,并在响应体中提供错误详细信息。

3.gRPC(Google远程过程调用)

  • 优势: 构建在HTTP/2之上,提供了高级功能,如多路复用和服务器推送。使用Protocol Buffers,一种语言中立、平台中立、可扩展的序列化结构化数据的方式。在带宽和资源方面效率高,特别适用于微服务。
  • 缺点: 与JSON相比,可读性较差。需要支持HTTP/2。
  • 特性: 支持数据流和双向通信。适用于服务器间通信。

API设计中的关系

在电子商务环境中,您可能会有诸如用户到订单、订单到产品等的关系。skP28资讯网——每日最新资讯28at.com

skP28资讯网——每日最新资讯28at.com

设计端点以反映这些关系是重要的。例如,在这种情况下,**GET /users/{userId}/orders**应该为特定用户获取订单。skP28资讯网——每日最新资讯28at.com

1.GET请求的查询、限制和幂等性

常见的查询还包括用于分页的**limit**和**offset**,或者用于在某个日期范围内过滤产品的**startDate**和**endDate**。这允许用户检索特定集合的数据,而不会一次性向系统或用户提供太多信息。skP28资讯网——每日最新资讯28at.com

skP28资讯网——每日最新资讯28at.com

设计良好的GET请求是幂等的,这意味着多次调用它不会改变结果。skP28资讯网——每日最新资讯28at.com

GET请求永远不应该改变数据。它们只用于检索。skP28资讯网——每日最新资讯28at.com

2.向后兼容性和版本控制

在修改端点时,保持向后兼容性非常重要。这意味着确保更改不会破坏现有客户端。skP28资讯网——每日最新资讯28at.com

版本控制: 引入版本(比如**/v2/products**)是处理重大更改的常见做法。skP28资讯网——每日最新资讯28at.com

skP28资讯网——每日最新资讯28at.com

在GraphQL的情况下,添加新字段(v2字段)而不删除旧字段有助于在不破坏现有客户端的情况下发展API。skP28资讯网——每日最新资讯28at.com

3.速率限制和CORS

另一个最佳实践是设置速率限制。这用于控制用户在一定时间内可以发起的请求次数。这对于维护API的可靠性和可用性至关重要。它还防止API受到DDoS攻击。skP28资讯网——每日最新资讯28at.com

skP28资讯网——每日最新资讯28at.com

通常做法还包括设置CORS设置(跨域资源共享)。CORS设置对于Web安全至关重要。它们控制哪些域可以访问您的API,防止不希望的跨站点交互。skP28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-60987-0.htmlAPI设计:从基础到优秀实践

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 图片识别无须借助外包API,使用这两个强大的Python库也能实现

下一篇: 开源了!用 AI 生成 Vue 组件,好玩又好用

标签:
  • 热门焦点
  • 天猫精灵Sound Pro体验:智能音箱没有音质?来听听我的

    这几年除了手机作为智能生活终端最主要的核心之外,第二个可以成为中心点的产品是什么?——是智能音箱。 手机在执行命令的时候有两种操作方式,手和智能语音助手,而智能音箱只
  • 5月iOS设备性能榜:M1 M2依旧是榜单前五

    和上个月一样,没有新品发布的iOS设备性能榜的上榜设备并没有什么更替,仅仅只有跑分变化而产生的排名变动,刚刚开始的苹果WWDC2023,推出的产品也依旧是新款Mac Pro、新款Mac Stu
  • 容量越大越不坏?24万块硬盘故障率报告公布 这些产品零故障

    8月5日消息,云存储服务商Backblaze发布了最新的硬盘故障率报告,年故障率有所上升。Backblaze发布的硬盘季度统计数据,其中包括故障率等重要方面。这些结
  • K6:面向开发人员的现代负载测试工具

    K6 是一个开源负载测试工具,可以轻松编写、运行和分析性能测试。它建立在 Go 和 JavaScript 之上,它被设计为功能强大、可扩展且易于使用。k6 可用于测试各种应用程序,包括 Web
  • K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 讲故事上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋友反
  • 每天一道面试题-CPU伪共享

    前言:了不起:又到了每天一到面试题的时候了!学弟,最近学习的怎么样啊 了不起学弟:最近学习的还不错,每天都在学习,每天都在进步! 了不起:那你最近学习的什么呢? 了不起学弟:最近在学习C
  • 最“俊美”淘宝卖家,靠直播和短视频圈粉,上架秒光,年销3000万

    来源 | 电商在线文|易琬玉编辑|斯问受访店铺:Ringdoll戒之人形图源:微博@御座的黄山、“Ringdoll戒之人形”淘宝店铺有关外貌的评价,黄山已经听累了。生于1985年的他,哪
  • 微软发布Windows 11新版 引入全新任务栏状态

    近日,微软发布了Windows 11新版,而Build 22563更新主要引入了几周前曝光的平板模式任务栏等,系统更流畅了。更新中,Windows 11加入了专门针对平板优化的任务栏
Top