首页
学习
活动
专区
圈层
工具
发布

REST API有关幂等性等11条最佳实践

在我的职业生涯中,我使用了数百个 REST API 并制作了数十个。由于我经常在 API 设计中看到相同的错误,因此我认为写下一组最佳实践可能会更好。...规则 #8:不要使用 404 来表示“未找到” HTTP 规范规定,应使用 404 来表示未找到资源。按照字面解释,如果向不存在的 ID 提出 GET/PUT/DELETE 等请求,则应返回 404。...有很多层软件会对请求返回 404,其中有些可能是你无法控制的: 配置错误的客户端点击了错误的 URL 配置错误的代理(客户端和服务器端) 负载平衡器配置错误 服务器应用程序中的路由表配置错误 返回...由于成功执行的 DELETE 作业无论如何都会重试,因此作业必须将 "未找到 "响应视为成功。如果将 404 作为成功处理,而堆栈中的失败返回 404,作业就会从队列中删除,删除也不会传播。...但几乎任何策略都比返回 404(实体未找到)要好。 规则#10:一定要使用结构化错误格式 如果您正在为一个简单的网站构建后端,您可能可以忽略此部分。

1K20

什么是RESTful,REST api设计时应该遵守什么样的规则?

如何使用REST API?HTTP 动词REST API 通过各种 HTTP 请求方法,使前端与服务器的通信过程更容易,最常用的方法是:GET : 用于读取服务器上的数据。POST : 用于创建数据。...4xxs:客户端错误,例如,404 - 找不到页面。5xxs:服务器错误,请求失败。...400:错误请求(客户端应修改请求)401:未经授权,凭据无法识别403:禁止,凭据接受但没有权限404:未找到,资源不存在410:消失了,资源以前存在但现在不存在429:请求过多,用于速率限制,应包含重试标头...500:服务器错误,一般性,值得查看其他 500 级错误503:服务不可用,另一个重试标头有用总结REST是一种软件架构风格,用于 Web 架构的设计,任何遵循 REST 设计原则的 API都被称为 RESTful...,在开发初期,开发者需要花费大量的时间去设计接口,这些接口一般都是遵循RESTful风格,力争接口简单、易懂。

1.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用Spring Boot设计和实现REST API

    REST端点用于集成应用程序或服务器端向客户端提供服务。在本文中,将介绍基于CRUD的SpringBoot来设计和实现REST端点。...所有这些方法都有助于设计简单的REST端点,因为这是标准的,所以每个人都可以理解它们。 GET GET方法用于访问资源。要根据ID获取客户记录,我们可以使用/ customers / {id}等端点。...当客户端请求无效或不存在的“id”时,我们可以使用标准HTTP响应代码,而不是使用自定义正文或错误消息进行响应。HTTP响应代码是REST中用于通知处理状态的标准方式。...有许多类别的代码可用,这里是关于这些代码的一些信息的链接。 404 - 未找到:如果数据存储中没有“id”,则使用此HTTP代码是合适的。...demo链接 https://github.com/kpradeep12/mycustomers

    2.5K30

    带有 Python REST Web 服务示例的 REST API 快速入门指南

    我们在此服务中的资源将是文章,它将存储在 TGS 上发布的所有文章,格式如下 类别 观看次数 标题 我们将公开 REST 端点以添加、修改、删除和更新文章。基于 REST 的 CRUD 功能。...创建 API 端点和 REST 方法 接下来,我们需要创建 api 端点和所需的 REST 方法,如下所示。 GET 方法将在文章列表中搜索请求的类别,如果找到则返回数据以及响应代码 200 OK。...否则 404 未找到 class Article(Resource): def get(self, category): POST 方法将在文章列表中插入新的文章数据,并返回插入的数据并创建响应代码...如果记录已存在,则返回错误代码 400 错误请求。 def post(self,category): PUT 方法将覆盖记录并返回数据以及响应代码 200 OK。...否则 404 未找到。 def delete(self,category): 4.注册资源并分配URI 我们的最后一步是将我们的资源注册到 REST API 并为其分配一个 URI。

    3.2K00

    .net 温故知新【12】:Asp.Net Core WebAPI 中的Rest风格

    REST形式的API组织形态是资源和实体,请求的路由可以看出对资源的访问,规范统一接口自解释。 比如 https://xxxx/Student/1 用Get方法调用就是获取编号为1的学生。...在Rest风格中使用状态码来标识返回结果,其中常用200、201、400、401、404、410、500等。...ASP.NET Core WebAPI接口 在ASP.NET WebAPI中我们也能看到Rest的风格,理想很丰满,显示很骨干。...如果我们严格的按照Rest风格设计接口的话,需要对技术人员有很高的要求,需要去划分不同业务不同的资源定位,而且有些业务也找不到准确的谓词去定义,响应状态码有限无法表达准确的意思,或者是时间上来不及等等原因...而在Rest 中Post通常用201返回新增成功,delete 删除的数据不存在返回404,但是404大家知道可能也许是url错误,所以表诉不清。

    1.1K40

    Rest api简介

    400 错误请求 , 服务器不理解请求的语法。 401 未授权 , 请求要求进行身份验证。 403 已禁止 , 服务器拒绝请求。 404 未找到 , 服务器找不到请求的网页。...当用户再次请求数据时,就可以在 HTTP 请求中使用 If-Modified-Since 或者 If-None-Match 头信息,把上次请求得到的时间戳或者电子标签传给服务器。...当收到一个有条件请求的 HTTP 头的 REST 请求的时候,我们的程序需要将收到的时间戳或者电子标签与当前内容作比较,就可以很容易的知道用户请求的数据内容在这段时间是否发生过修改,并根据比较结果返回给用户最新内容...用户在发出修改请求的同时,在 HTTP 请求中使用 If-Not-Modified-Since 或者 If-Match 头信息,把获取数据时得到的时间戳或者电子标签传给服务器;我们的程序通过与服务器当前内容的比较...通过更加灵活的使用这类链接元素,以及提供必要的数据冗余,我们可以大大简化开发者的编程逻辑,提高 REST API 的使用效率 回页首 更多的需要注意的细节与技巧 除了以上提到的方面,还有大量的细节与技巧

    3K60

    Spring Boot处理REST API错误的正确姿势

    在本文中,我们就来介绍在我们使用spring boot来构建REST API时如何更好的更恰当的处理错误信息。 ?...使用Spring来构建REST API现在基本上已经变成了java开发者事实上的标准。...如果你仍然不确定如何开发基本的REST API,那么你应该先去了解下有关Spring MVC的文章,或者关于构建Spring REST服务的文章。...时间戳字段是一个整数,甚至不携带时间戳所在的度量单位的信息。异常字段的话,可能只有Java开发人员看到这个比较开心,这些信息让API消费者也陷入了思索API服务端究竟发生了什么内部的编程错误。...这样我们就可以使用@JsonFormat这个注解来将Java 8的日期和时间类转换为JSON来表示: ? 好的,来定义一个表示API错误的类。

    4.6K130

    Laravel API教程:如何构建和测试RESTful API

    虽然会一步步跟着做,但由于php还只停留在几年前的初学阶段,以及个人英语水平所限,有些新名词可能会理解有误,翻译过程中难免出现错误之处,还请各位能见谅与指出或有能力也可以直接点击上面的链接查看英文原文。...关于一致性的说明 使用一组约定(如REST)的最大优点是您的API将更容易消费和开发。...$table->timestamps() 将会为我们生成时间戳——在created_at和updated_at时,但是不用担心设置一个默认的,Laravel将在需要时更新这些字段。...400: 错误的请求。无法通过验证的请求的标准选项。 401:未经授权 用户需要进行身份验证。 403:禁止 用户已通过身份验证,但没有执行操作的权限。 404: 未找到。...它现在不节省大量的时间,但随着项目的增长,它有助于保持路由DRY。 测试我们的端点 Laravel包含通过phpunit.xml已经设置的PHPUnit开箱即用的集成。

    24.3K20

    REST API 最佳实践

    1.REST API 设计建议 1.用名词表示资源 当你设计一个 REST API 时,你不应该在端点路径中使用动词。端点应该使用名词,表示它们各自的作用。...3.在端点上使用嵌套显示关系 很多时候,不同的端点可以相互联系,所以你应该对它们进行嵌套,这样更容易理解它们。...表示永久移动 4XX 客户端错误,如 400 表示错误的请求,404 表示未找到资源 5XX 服务器端错误,如 500 表示内部服务器错误 13.提供有用的错误消息 除了提供恰当的HTTP状态代码外...15.使用 HATEOAS API 的使用者未必知道,URL 是怎么设计的。一个解决方法就是,在响应中给出相关链接,便于下一步操作。这样的话,用户只要记住一个 URL,就可以发现其他的 URL。...文档应包含: API 的相关端点 端点的示例请求 在几种编程语言中的实现 不同错误的消息列表及其状态代码 你可以用于 API 文档的最常用工具是 Swagger。

    2.8K20

    设计一个优秀 API 的秘诀

    拿起一杯咖啡,让我们一起探索创建一个功能强大、用户友好的 API 的秘诀吧!理解 API 基础第一步:拥抱 REST - API 设计的基础优秀 API 构建的基石是 REST。...第二步:可预测的设计 - 保持一致性一致性对 API 至关重要。确保端点、响应、错误处理和分页结构保持统一。例如,除了仅仅使用“404 Not Found”外,还可以指定缺少什么内容。...第四步:清晰的错误信息错误处理通常是 API 的弱点。清晰地传达问题,有助于开发者更容易找出问题的根源。...明确显示版本(例如 /v1/users),确保每个版本始终如一地工作。第六步:文档 - 解释如何使用API 文档就像用户手册。涵盖必要的信息,如端点描述、请求/响应格式和示例错误消息。...Apipost 是一个强大的平台,使 API 测试和管理变得简单无缝。无论是初学者还是高级用户,都可以在一个地方轻松验证和调试端点。试试看,体验它如何提升你的 API 开发过程。

    21700

    你了解过系统集成服务集成交互技术:REST服务集成——RESTAPI吗

    Level 1:本层引入了资源概念,每个资源对应后端的URI资源标识符,HTTP向服务资源端点(Service End-Point)发送POST请求,并向方法中添加参数。...同时,这些链接对客户端和服务端也进行了解耦,你不再需要调整客户端来适应服务端的修改,通过双向的语义关联就可以更好地实现前后端分离。...RESTful架构 RESTful架构是一种典型的Client-Server架构,但是强调瘦服务端,服务端只应该处理跟数据有关的操作,所有RESTful架构显示相关的 工 作 都 应 该 放 在 客 户...【请求方式】 ● 公共请求头参数有Timestamp时间戳,请将其置于HTTP API的请求头中。Timestamp为本请求的UNIX时间戳,用于确认请求的有效期,以秒为单位。...● 400,多数情况下是指请求参数错误或请求不合法。 ● 401,sign值计算错误,或App已被删除。 ● 404,设备或对应的App信息不存在,将返回NotFound错误。

    2.2K20

    HPE OneView高危漏洞CVE-2025-37164剖析:未经认证的远程代码执行

    由于漏洞位于“/rest/id-pools/executeCommand”端点,因此该端点不存在的虚拟机不受影响。...: keep-alive(此处为图片占位符,说明:上图显示的测试ESXi虚拟机版本为10.20.00.xxx)调用易受攻击的端点只会显示HTTP响应404。...(此处为图片占位符,说明:图片显示了用于Hyper-V虚拟机的HPE OneView版本10.20.00)下面的响应同样返回HTTP响应404。...(此处为图片占位符,说明:图片显示了用于Hyper-V虚拟机的HPE OneView版本6.60.07)现在,向易受攻击端点发送的GET请求返回HTTP响应401而不是404,这表明在该软件版本中易受攻击的端点已启用...Connection: keep-alive(此处为图片占位符,说明:上图显示了不同的HTTP响应,不是404而是401)通过调用目标主机执行一些命令来确认漏洞。

    34600

    什么是REST API

    原文链接:https://www.sitepoint.com/rest-api/[1] 作者:https://www.sitepoint.com/author/craig-buckler/[2] 前言...REST API示例 在你的浏览器中打开以下链接,从Open Trivia Database[3]中请求一个随机的计算机问题: https://opentdb.com/api.php?...当发生错误时应该返回适当的状态码,比如说400 Bad Request,404 Not Found,401 Unauthorized等等。...REST API认证 上面显示的测试API是开放的:任何系统都可以在未经授权的情况下获取数据。这对于访问私有数据或允许更新和删除请求的API是不可行的。...REST API链接和开发工具 有许多工具可以帮助所有语言的RESTful API开发。值得注意的选项包括: Swagger[20]:帮助设计、记录、模拟、测试和监控REST APIs的各种工具。

    6K20

    restful最佳实践--接口规范

    是否建⽴了前端的错误追踪机制?能否帮助我们快速地定位出问题。 前后端分离的核⼼:后台提供数据,前端负责显⽰ 前提 RESTful API 统一约束客户端和服务器之间的接口。...**REST是设计风格而不是标准。...sorts: ['-age', 'name'] 时间传递 日期和时间戳如果没有适当和一致地处理,可能是一个真正的头痛。...建议使用UTC或GMT时间存储,处理,缓存等时间戳或者使用统一格式化的时间字符串”yyyy-MM-dd HH:mm:ss” Respone 状态码 状态码 说明 200 OK 服务器成功返回请求的数据...,服务器没有进行新建或修改数据的操作(幂等操作) 401 Unauthorized 没有权限(令牌、用户名、密码错误) 403 Forbidden 得到授权(与401错误相对),但是访问是被禁止的 404

    2.3K42

    REST在许多API使用场景中仍然优于GraphQL

    随着时间的推移,随着您在请求中增加资源,理解和遵循您的速率限制将变得更加复杂。 最后,随着 API 的成熟,其 GraphQL 模式变得更加复杂。...为什么 REST 更好并且将继续存在 以下是一些 REST 是集成 SaaS 应用程序的最佳选择的原因。 REST API 附带标准化的错误代码。...这些代码——包括从 404(未找到)到 500(内部服务器错误)的所有内容——使诊断问题和构建自动解决问题的错误处理流程变得容易。...例如,如果您收到 429 太多请求错误,您可以根据响应中建议的等待时间创建自动重试。 另一方面,GraphQL 要求您的工程师考虑错误键中提供的响应。...找到和雇用具有 REST 工作经验的工程人才也更容易,这使得您的组织更容易随着时间的推移扩展 REST API 集成。

    1.2K10

    REST 十诫

    你只是通过保持一致,就为自己和他人节省了大量的时间。 要优雅 如果你正在构建 API,就不可避免地会发生一些问题。这很好。这也是意料之中的事。你不必因为 API 的错误或问题而感到难过。...客户端错误响应代码(从 4xx 开始)。 服务器错误响应代码(以 5xx 开头)。 因此,你真的拥有你需要的所有状态。从 OK、未授权、未找到、内部服务器错误到超文本咖啡壶控制协议,所有这些都有。...检查给定的 user_id 是否真的存在于系统中:如果没有,则以 404(未找到)回应。 如果 user_id 返回一个结果,则响应 200(OK)。...它以某种方式被传送到 API,API 自然会出发一次确认和错误,并且响应 400(错误请求)。与此同时,API 应当发出一种通用的错误响应模式,使客户端能够将任意或全部的信息显示给终端用户。...原文链接: https://treblle.com/blog/the-10-rest-commandments

    65420

    第十五章·Kibana深入-Dev Tools及Lucene语法

    Kibana提供了Console UI来通过REST API与Elasticsearch交互,Console位于Kibana的Dev Tools栏下。...Console有两个主要区域,左边是编辑区用来书写REST请求,右边用来显示请求返回结果。 自动提示 Console提供了自动提示功能,可以为你提供API、方法等提示。...左侧显示历史纪录,点击其中一条后会在右侧显示。  点击apply会自动copy到下面的Console编辑区,点击Clear会清空所有历史请求。...,会返回所有字段值中包含404的日志 使用双引号包起来作为一个短语搜索 "like Gecko" 字段搜索 也可以按页面左侧显示的字段搜索 限定字段全文搜索:field:value 精确搜索:关键字加上双引号..."where select"~5 表示 select 和 where 中间可以隔着5个单词,可以搜到 select password from users where id=1 范围搜索 数值/时间

    2K30
    领券