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

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

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

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

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

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

API设计:电子商务示例

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

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

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

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

API设计和CRUD:

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

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

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

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

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

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

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

API范例

API有不同的范例,每个范例都有其自己的一套协议和标准。hdn28资讯网——每日最新资讯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设计中的关系

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

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

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

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

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

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

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

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

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

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

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

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

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

3.速率限制和CORS

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

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

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

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

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

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

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

标签:
  • 热门焦点
  • 卢伟冰长文解析K60至尊版 对Redmi有着里程碑式的意义

    在今天的Redmi后性能时代战略发布会结束之后,Redmi总经理卢伟冰又带来了一篇长文,详解了为什么 Redmi 要开启后性能时代?为什么选择和 MediaTek、Pixelworks 深度合作?以及后性
  • 石头自清洁扫拖机器人G10S评测:多年黑科技集大成之作 懒人终极福音

    科技圈经常能看到一个词叫“缝合怪”,用来形容那些把好多功能或者外观结合在一起的产品,通常这样的词是贬义词,但如果真的是产品缝合的好、缝合的实用的话,那它就成了中性词,今
  • 线程通讯的三种方法!通俗易懂

    线程通信是指多个线程之间通过某种机制进行协调和交互,例如,线程等待和通知机制就是线程通讯的主要手段之一。 在 Java 中,线程等待和通知的实现手段有以下几种方式:Object 类下
  • 把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • 得物效率前端微应用推进过程与思考

    一、背景效率工程随着业务的发展,组织规模的扩大,越来越多的企业开始意识到协作效率对于企业团队的重要性,甚至是决定其在某个行业竞争中突围的关键,是企业长久生存的根本。得物
  • 学习JavaScript的10个理由...

    作者 | Simplilearn编译 | 王瑞平当你决心学习一门语言的时候,很难选择到底应该学习哪一门,常用的语言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的“征求意见版”:1、取消P序列
  • 华为Mate60标准版细节曝光:经典星环相机模组回归

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
Top