在使用firebase REST API时,如何检查从firebase数据库接收的eTag是否已更改?
我找到了使用eTag有条件地更新或向数据库写入数据的方法。但是我想要的是从数据库中读取(获取)已更改的数据,如果数据已更改,则使用REST API和不更新数据在使用firebase REST API时,如何检查从firebase数据库接收的eTag是否已更改?,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,我找到了使用eTag有条件地更新或向数据库写入数据的方法。但是我想要的是从数据库中读取(获取)已更改的数据,如果数据已更改,则使用REST API和不更新数据 我正在尝试实现数据库的服务器端缓存,如果缓存是旧的(eTag已更改),我希望更新缓存。使用REST API执行条件更新是一个多步骤的过程: 无论何时从数据库读取数据,您都需要通过传递值为true的X-Firebase-ETag标题来确保您也请求ETag Firebase随后将在响应中使用数据和ETag标题进行响应,如ETag:ViJFJ
我正在尝试实现数据库的服务器端缓存,如果缓存是旧的(eTag已更改),我希望更新缓存。使用REST API执行条件更新是一个多步骤的过程:
- 无论何时从数据库读取数据,您都需要通过传递值为
的true
标题来确保您也请求X-Firebase-ETag
ETag
- Firebase随后将在响应中使用数据和
标题进行响应,如ETag
ETag:ViJFJowpbyRvgGNPzPJdGeN+mCY=
- 您需要将
存储在存储数据的同一位置ETag
- 从缓存中读取该位置的现有
ETag
- 将
头中的if match
与新数据一起传递给写入请求,如下所示:ETag
-H'if match:ViJFJowpbyRvgGNPzPJdGeN+mCY='
ETag
值与当前数据的ETag
进行比较。有两种可能性:
- 如果
值相同(即,如果未修改数据),您的写入将保留到存储器中李>ETag
- 如果
值不同(即,如果服务器上的数据已更新),您的写入将被拒绝,您将在响应中返回更新的数据和ETag
。此时,您应该将新数据和ETag
写入缓存,然后根据这些值重试更新ETag
- 这个
- 这个
不支持将
ETag
传递到GET
调用中。这听起来是一个合理的功能要求,所以我推荐你。但无法保证是否/何时实现此功能。使用REST API执行条件更新是一个多步骤的过程:
- 无论何时从数据库读取数据,您都需要通过传递值为
的true
标题来确保您也请求X-Firebase-ETag
ETag
- Firebase随后将在响应中使用数据和
标题进行响应,如ETag
ETag:ViJFJowpbyRvgGNPzPJdGeN+mCY=
- 您需要将
存储在存储数据的同一位置ETag
- 从缓存中读取该位置的现有
ETag
- 将
头中的if match
与新数据一起传递给写入请求,如下所示:ETag
-H'if match:ViJFJowpbyRvgGNPzPJdGeN+mCY='
ETag
值与当前数据的ETag
进行比较。有两种可能性:
- 如果
值相同(即,如果未修改数据),您的写入将保留到存储器中李>ETag
- 如果
值不同(即,如果服务器上的数据已更新),您的写入将被拒绝,您将在响应中返回更新的数据和ETag
。此时,您应该将新数据和ETag
写入缓存,然后根据这些值重试更新ETag
- 这个
- 这个
不支持将
ETag
传递到GET
调用中。这听起来是一个合理的功能要求,所以我推荐你。但无法保证是否/何时实施此操作。我不想更新数据(PUT、POST等)。我只想知道数据是否已更改,并使用简单的GET请求读取更改的数据。不支持将ETag
传递到GET
调用中。这听起来是一个合理的功能要求,所以我推荐你。但这是否/何时实施还没有保证。我不想更新数据(PUT、POST等)。我只想知道数据是否已更改,并使用简单的GET请求读取更改的数据。不支持将ETag
传递到GET
调用中。这听起来是一个合理的功能要求,所以我推荐你。但无法保证是否/何时实施。