java - Spring数据休息POST请求

标签 java spring rest spring-data

我正在使用 Spring Data Rest 开发一个测验系统,其结构如下:

1 个测验包含许多问题
1个问题包含多个答案

我们希望用以下 URL 结构来表示这一点:

GET/quiz-service/quizzes/1/questions/1/answers - 获取属于测验 1 中问题 1 的所有答案。
POST/quiz-service/quizzes/1/questions/1/answers - 在测验 1 中添加问题 1 的答案。
POST/quiz-service/quizzes/1/questions - 向测验 1 添加问题。

目前,当我们尝试 POST 到上面时,我们会得到一个 HTTP 40 左右的代码。

上述 URL 中的所有 ID 都是唯一的。以下两个不同的测验涉及同一问题,会导致问题:

/quiz-service/quizzes/1/questions/1 - HTTP 正常
/quiz-service/quizzes/2/questions/1 - 鉴于上述情况,将导致 HTTP NOT FOUND。

我们有一个用于所有 3 个测验、问题和答案的存储库界面。

根据 this post以及我们见过的其他人,我们知道您可以发布到/quiz-service/questions 并包含测验链接,或者向测验端点发出第二个请求以添加问题。尽管如此,我们有什么办法可以做到上述吗?

提前致谢

最佳答案

Spring Data REST 集中利用超媒体,因此虽然您对 URI 结构有一定的控制,但您无法(或者应该有必要)将其调整为您想要的样子。这里实用的方法是利用公开的链接关系并按照 reference documentation 中记录的方式使用它们。 .

随着超媒体的使用,设计 URI 方案基本上变得无关紧要。重要的是资源公开的表示形式、它包含的链接等。Spring Data REST 默认为您提供了很多表示形式,所有这些都在上面链接的文档中进行了描述。

关于java - Spring数据休息POST请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31726533/

相关文章:

java - 使用数组作为函数参数 : "not a statement" (Java)

java - 执行此程序后数据库未更新

java - 检测 TableView JavaFX 行上的双击

spring - 注册过滤器时@Bean和@Component的区别?

ios - 使用带有身份验证的 IOS 的 Restful API 调用

c# - 当从另一个项目内部提供 api 时,如何在 Swashbuckle/Swaggerwork 中创建 url 路径?

java - JMX 自定义映射

javascript - 使用 JavaScript 在 Spring MVC 中上传图像进行预览

java - 为什么 SpringBootApplication 不将我的 Controller 注册为处理程序?

java - 发送文件更好或输出流