gpt4 book ai didi

java - spring data Rest如何将文档的版本和id发送到REST API客户端?

转载 作者:行者123 更新时间:2023-12-01 10:35:14 25 4
gpt4 key购买 nike

我们在 Spring Boot 应用程序中使用 mongodb 和 Spring Data Rest。我们通过 Spring Data Rest 默认的 REST API 公开文档。对于乐观锁定,每个文档都使用 @org.springframework.data.annotation.Version@org.springframework.data.annotation.Id 进行注释。

我想知道这些属性是如何通过 REST API 默认公开的,以便客户端可以更新文档。

最佳答案

关于 ID:spring-data-rest 默认隐藏 id 并尝试仅与资源链接进行通信。它尝试应用 HATEAOS 的原则 - http://docs.spring.io/spring-data/rest/docs/current/reference/html/#conditional.etag

关于版本:如果您在实体中指定了版本(我只有 spring-data-jdbc 背景),spring-data-rest 将在 ETag header 的响应中报告版本。

如果你例如发布补丁并希望确保您更新的版本与您阅读的版本仍然是最新的,然后才能使用您在 If-Match 中收到的 ETag header 。如果版本不再是最新的,您会收到 412 Precondition Failed

这是我的请求流程:

//get a product
http :8080/products/2 -v

Response:
HTTP/1.1 200 OK
ETag: "2"

补丁请求如下所示

http PATCH :8080/products/2 name=some3 If-Match:2 -v
Request:
PATCH /products/2 HTTP/1.1
Accept: application/json
Content-Type: application/json
If-Match: 1
Response:
HTTP/1.1 412 Precondition Failed
ETag: "3"

您将在 spring-data-rest 文档中找到详细信息: http://docs.spring.io/spring-data/rest/docs/current/reference/html/#conditional.etag

关于java - spring data Rest如何将文档的版本和id发送到REST API客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34787568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com