首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

发布到资源集合和If- ETag标头时的REST -Match

发布到资源集合和If-ETag标头时的REST-Match是一种用于实现乐观并发控制的机制。它在云计算中的应用场景主要是在分布式系统中处理并发更新操作。

当客户端向服务器发送更新请求时,可以在请求中包含If-Match或If-None-Match标头。这些标头用于指定资源的当前状态,通常是通过资源的ETag值来表示。ETag是一个唯一标识符,用于表示资源的版本号或摘要。

在资源集合中发布新资源时,可以使用If-None-Match标头来确保新资源的唯一性。如果服务器上存在具有相同ETag值的资源,则表示资源已存在,服务器可以返回409冲突的状态码。

在更新资源时,可以使用If-Match标头来确保客户端更新的是最新版本的资源。如果服务器上的资源的ETag值与客户端提供的ETag值匹配,则表示资源未被其他客户端修改过,服务器可以接受更新请求。如果ETag值不匹配,则表示资源已被其他客户端修改过,服务器可以返回412前提条件失败的状态码。

通过使用REST-Match机制,可以有效地处理并发更新操作,避免数据的不一致性和冲突。在腾讯云的云计算服务中,可以使用腾讯云API网关(API Gateway)来实现REST-Match机制,具体可以参考腾讯云API Gateway的文档:API Gateway产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

弱网客户端的福音:节省带宽的利器【ETag】

这只适用于比较严格的ETag——协议也提供了一个简单的ETag。 使用If-*头将一个标准的GET请求转换为条件GET。...与ETag一起使用的两个If-*头是 “If-None-Match”和“If-Match”——每一个HTTP头都有它自己的语义,正如本文后面所讨论的。...52 – 客户端在下一步发起REST API请求时,会使用If-None-Match头携带上一步保存的ETag值;如果服务器上的资源没有发生变化,那么响应将不会包含任何响应体,并且返回的HTTP状态码将会是...5.测试ETag 那就开始吧——在检索一个资源时,我们需要验证返回的响应体将包含一个“ETag”头。...更新上一步返回的资源 发送一个新的检索请求,这次使用 “If-None-Match”头携带上一步返回的ETag值 在这第二次请求中,服务器将返回一个200 OK和完整的资源,这是因为此时资源已经更新但请求携带的

1.9K20
  • 接口测试 | 27 HTTP接口详细验证清单

    概述 当我们在构建、测试、发布一套新的HTTP API时,包括我在内的大多数人都不知道他们所构建的每一个组件的复杂性和细微差别。...Cache Validation, 如果有可缓存的API,那么应该在响应中提供最后修改或ETag头,然后支持If-修饰性请求,因为有条件的请求。...Conditional Modifications, ETag头也可以用于支持资源的条件修改。...通过在获取上提供一个ETag头,稍后的POST、补丁或删除请求可以提供一个if-match头来检查它们是否在更新或删除它们上次看到的相同状态的资源。...Content Negotiation, 如果想要支持资源的多个表示,您可以使用Content Negotiation(内容协商)(例如。接受标头),或者不同的url的不同的url(例如。

    1.5K60

    REST API设计指导——译自Microsoft REST API Guidelines(四)

    表的请求头应该遵循微软REST API服务规范。使用这些标头不是必须的,但是如果用到,那么它们必须使用一致。...Accept-Encoding  | Gzip, deflate | 在适用时,REST API应支持GZIP和deflate 。对于非常大的资源,服务可以忽略和返回未压缩的数据。...PS:通过将Prefer标头设置可以省略响应正文。如果Prefer标头设置为return-no-content,则服务将使用状态代码204(No Content)和响应标头进行响应。...If-Match, If-None-Match, If-Range  | 字符串| 使用乐观并发控制支持资源更新的服务必须支持IF匹配头这样做。...ETAG | 当请求的资源具有实体标签时| ETAG响应头字段为所请求的变体提供实体标签的当前值。与If-Match, If-None-Match、If-Range来实现乐观并发控制。 7.7.

    2K50

    对不起,看完这篇HTTP,真的可以吊打面试官

    如果 Etag 标头是资源响应的一部分,则客户端可以在未来请求的标头中发出 If-None-Match,以验证缓存的资源。...Wiki 页面(发布数据)时,POST 请求将包含 If-Match 标头,其中包含 Etag 值以检查有效性。...Etag: W/"0815" 下面就来具体探讨一下条件请求的标头和 Etag 的关系 条件请求 条件请求主要包含的标头如下 If-Match If-None-Match If-Modified-Since...If-Unmodified-Since If-Range If-Match 对于 GET 和 POST 方法,服务器仅在与列出的 Etag(响应标头) 之一匹配时才返回请求的资源。...对于其他方法,特别是 PUT 方法,If-Match 可以防止丢失更新,服务器会比对 If-Match 的字段值和资源的 Etag 值,仅当两者一致时,才会执行请求。

    6.4K21

    震惊 | HTTP 在疫情期间把我吓得不敢出门了

    如果 Etag 标头是资源响应的一部分,则客户端可以在未来请求的标头中发出 If-None-Match,以验证缓存的资源。...Wiki 页面(发布数据)时,POST 请求将包含 If-Match 标头,其中包含 Etag 值以检查有效性。...Etag: W/"0815" 下面就来具体探讨一下条件请求的标头和 Etag 的关系 条件请求 条件请求主要包含的标头如下 If-Match If-None-Match If-Modified-Since...If-Unmodified-Since If-Range If-Match 对于 GET 和 POST 方法,服务器仅在与列出的 Etag(响应标头) 之一匹配时才返回请求的资源。...对于其他方法,特别是 PUT 方法,If-Match 可以防止丢失更新,服务器会比对 If-Match 的字段值和资源的 Etag 值,仅当两者一致时,才会执行请求。

    5.4K20

    HTTP缓存机制的Etag、Last-Modified、If-None-Match和If-Modified-Since、Expires和Cache-Control笔记

    Etag和If-None-Match:     Etag由服务器端生成,客户端通过If-None-Match这个条件请求来验证资源是否修改。...但是Cache-Control可能被某些缓存和浏览器忽略。可以通过将Expires HTTP版本1.0标头字段值设置为早于响应时间的时间来进行模拟。...它是浏览器告诉服务器和任何中间缓存它想要新资源的一种手段。这个和HTTP / 1.0规范中定义的Pragma:no-cache头字段具有相同的目的。但是,它仅为请求标头定义。...许多用户代理在从历史存储或缓存加载页面时显示不同的行为,具体取决于协议是HTTP还是HTTPS。用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。...If-Modified-Since如果提供的日期以来尚未更改,服务器不会发送文档的实际内容。 如果文档的ETag仍然与If-None-Match标头的值匹配,则服务器将不发送实际文档。

    2.4K20

    撰写合格的REST API

    稍稍总结了些经验,在这篇文章里讲讲如何撰写「合格的」REST API。 RFC一致性 REST API一般用来将某种资源和允许的对资源的操作暴露给外界,使调用者能够以正确的方式操作资源。...如今鲜有人在撰写REST API时, 简单说来就是一个操作符合幂等性,那么相同的数据和参数下,执行一次或多次产生的效果(副作用)是一样的。...一个合格的REST API需要根据Accept头来灵活返回合适的数据。...If-Match:在对某个资源做PUT/PATCH/DELETE操作时,服务器应该要求客户端提供If-Match头,只有客户端提供的Etag与服务器对应资源的Etag一致,才进行操作,否则返回412 precondition...当客户端请求某个资源时,该资源的Etag一同被返回,而当客户端需要修改该资源时,需要通过"If-Match"头来提供这个Etag。

    1.6K50

    HTTP的缓存机制是什么?

    当客户端或代理服务器收到对资源的请求时,它们首先检查缓存,如果存在有效的缓存副本,就可以直接返回缓存的副本,从而避免了请求的发送和服务器端的处理过程。...缓存标头:HTTP 协议提供了一些特定的缓存标头,如 ETag(实体标签)和 Last-Modified(最后修改时间),用于识别和比较资源的不同版本。...客户端在后续请求中可以通过发送 If-None-Match 标头将 ETag 发送回服务器,以检查资源是否发生了变化。...服务器根据 ETag 或 Last-Modified 标头来确定资源是否发生了变化,并返回相应的状态码(如 304 Not Modified),以指示客户端使用缓存副本。...开发者应该合理利用缓存机制,并根据资源的特性和业务需求来设置适当的缓存策略和控制标头,以实现更好的用户体验和网络效率。

    38320

    网页性能优化浅谈与实践

    答: 通过标识资源或资源类型(例如图像或CSS文件),然后使用所需的缓存选项指定资源的标头,来启用缓存。...Tips : Cache-Control 符合缓存策略时,服务器不会发送新的资源,但不是说客户端和服务器就没有会话了,客户端还是会发请求到服务器的。...服务器通过某个算法对资源进行计算,取得一串值(类似于文件的md5值),之后将该值通过etag返回给客户端,客户端下次请求时通过If-None-Match或If-Match带上该值,服务器对该值进行对比校验...Pragma的值为no-cache时,表示禁用缓存, Expires的值是一个GMT时间,表示该缓存的有效时间。 Tips : expires 标头只是设置内容应在将来的时间。...即优先级从高到低是 Pragma -> Cache-Control -> Expires; 基础示例: # Apache 的 .htaccess 配置缓存控制头和到期资源 <filesMatch

    60020

    ASP.NET WebAPI 中的参数绑定

    ASP.NET WebAPI 中的参数绑定 当 WebAPI 调用 Controller 上的方法时, 必须为其参数赋值, 这个过程就是参数绑定。...Content-Type: application/json Content-Length: 7 "Alice" 当一个参数有 [FromBody] 标记时, WebAPI 使用 Content-Type 标头来选择正确的格式...假设要获取 HTTP 请求 Header 中的 if-match 和 if-none-match 标签 (ETag) , 先定义一个类来表示 ETag : public class ETag {...public string Tag { get; set; } } 同时再定义一个枚举来指定是从 if-match 还是 if-none-match 标头中获取 ETag: public enum ETagMatch...针对上面的 ETagParameterBinding , 我们来定义两个自定义标记, 分别表示从 if-match 和 if-none-match 标头中获取, 代码如下: public abstract

    2.6K10

    在Spring Boot中实现HTTP缓存

    如果响应中存在Cache-Control和Expires标头,则客户端仅使用Cache-Control。...客户端根据Last-Modified标头的值设置其值,该标头是与此特定资源的先前响应一起发送的。...当客户端再次访问资源时,它应该在名为If-None-Match的头中发送其值。如果该值与资源的新计算的ETag匹配,则服务器可以使用空内容和HTTP代码304进行响应。...当您不跟踪资源的修改日期时,您也被迫使用ETag。服务器可以根据资源的属性计算其值。将其视为对象的哈希码。 如果资源具有其修改日期并且您可以使用一秒精度,请使用Last-Modified标头。为什么?...我们还讨论了服务器端验证并比较了Last-Modified和ETag标头。最后,您了解了如何在Spring应用程序中设置全局ETag过滤器。

    5.2K50

    浏览器缓存机制浅析

    需要注意的是,浏览器会在第一次请求完服务器后得到响应,我们可以在服务器中设置这些响应,从而达到在以后的请求中尽量减少甚至不从服务器获取资源的目的。浏览器是依靠请求和响应中的的头信息来控制缓存的。...ETag/If-None-Match 而ETag/If-None-Match则是上文大话中说的第二种check服务端文件是否更新的方式,也要配合Cache-Control使用。...,当客户端发现和服务器约定的直接读取缓存的时间过了,就在请求中发送If- None-Match选项,值即为上次请求后响应头的ETag值,该值在服务端和服务端代表该文件唯一的字符串对比(如果服务端该文件改变了...看如上截图,与服务器约定的直接读取本地缓存的时间过了,就会向服务器发送新的请求,请求头中带If-None-Match项,该字符串值会在服务 端进行匹配,很显然,并没有什么变化(看响应头的ETag值),于是响应...HTTP1.1中ETag的出现主要是为了解决几个Last-Modified比较难解决的问题: Last-Modified标注的最后修改只能精确到秒级,如果某些文件在1秒钟以内,被修改多次的话,它将不能准确标注文件的修改时间

    86240

    十个书写Node.js REST API的最佳实践(下)

    你可以把这些头想作先决条件:如果他们被碰到,请求会以一种不同的方式执行。 这些头会试着检查存储在服务器上资源的版本是否和同样资源的给定版本一致。...由于这个原因,这些头可以是: 上次修改的timestamp 或者一个每个版本都不同的实体标签 这些头是: Last-Modified(表明资源被上次修改的时间) Etag(表明实体标签) If-Modified-Since...(和Last-Modified头一起用) If-None-Match (和Etag头一起用) 让我们一起看下一个例子!...下面的客户端没有任何doc资源的先前版本,因此当资源被发送时无论If-Modified-Since还是If-None-Match都没有被应用。...来自MDN条件请求文档 一旦客户端尝试请求同样的资源,其可以设置If-Modified-Since和If-None-Match的头,因为它现在已经有了一个版本。

    2.4K00

    REST API和SOAP API之间的区别

    这种以不同形式请求信息的能力是可能的,因为资源的名称与其形式分离。尽管REST中的“R”是“表示”,而不是“资源”,但在构建允许客户以他们想要的形式询问信息的系统时,应该记住这一点。...总是会有特定于应用程序的行为,但是我们越能深入到非特定于应用程序的行为中,我们的系统就会越有弹性、更容易访问和更容易维护。 POST 当客户端无法预测要创建的资源的标识时,将使用POST。...当我们雇佣员工、下订单、提交表单等时,我们无法预测服务器将如何命名我们创建的资源。这就是为什么我们将资源的表示发布给处理程序(例如servlet)。服务器将接受输入、验证它、验证用户的凭据等。...在成功处理之后,服务器将返回一个201个HTTP响应代码,其中有一个“Location”标头,指示新创建的资源的位置。 注意:有些人将POST视为对创建请求的对话GET。...如果客户端发出一个带有If- match头的补丁请求,这个部分更新就有可能成为幂等性的。可以重试中断的请求,因为如果第一次成功,if – match头将与新状态不同。

    1.3K20

    HTTP headers

    端到端头 这些标头必须发送给消息的最终接收者:请求的服务器,或响应的客户端。中间代理必须重新传输未经修改的标头,并且缓存必须存储它们。...提供的像素值是四舍五入到最小的后续整数(即上限值)的数字。 如果在请求时未知所需的资源宽度,或者资源不具有显示宽度,Width则可以省略标题字段。...ETag 标识资源版本的唯一字符串。有条件的请求使用If-Match并If-None-Match使用此值来更改请求的行为。...If-Match 使请求成为条件,并且仅在存储的资源与给定ETag之一匹配时才应用该方法。 If-None-Match 使请求成为条件,仅在存储的资源与任何给定的ETag 不匹配时才应用该方法。...Range 指示服务器应返回的文档部分。 If-Range 创建一个条件范围请求,该条件范围请求仅在给定的etag或日期与远程资源匹配时才得到满足。用于防止从资源的不兼容版本下载两个范围。

    7.7K70
    领券