首页
学习
活动
专区
工具
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.8K20

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

请求应该遵循微软REST API服务规范。使用这些不是必须,但是如果用到,那么它们必须使用一致。...Accept-Encoding  | Gzip, deflate | 在适用时,REST API应支持GZIPdeflate 。对于非常大资源,服务可以忽略返回未压缩数据。...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

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

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

1.5K60

对不起,看完这篇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.3K21

震惊 | 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.3K20

HTTP缓存机制Etag、Last-Modified、If-None-MatchIf-Modified-Since、ExpiresCache-Control笔记

EtagIf-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值匹配,则服务器将不发送实际文档。

1.7K20

撰写合格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),以指示客户端使用缓存副本。...开发者应该合理利用缓存机制,并根据资源特性业务需求来设置适当缓存策略控制,以实现更好用户体验网络效率。

31820

网页性能优化浅谈与实践

答: 通过标识资源资源类型(例如图像或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

59320

在Spring Boot中实现HTTP缓存

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

5.1K50

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.5K10

十个书写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-SinceIf-None-Match,因为它现在已经有了一个版本。

2.3K00

浏览器缓存机制浅析

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

84840

HTTP headers

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

7.7K70

REST APISOAP API之间区别

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

1.3K20
领券