【发布时间】:2015-10-21 23:22:06
【问题描述】:
我正在使用具有以下结构的 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-something 代码。
上述网址中的所有 ID 都是唯一的。以下,如果有 2 个不同的测验涉及同一个问题,会导致问题:
/quiz-service/quizzes/1/questions/1 - HTTP OK
/quiz-service/quizzes/2/questions/1 - 鉴于上述情况,将导致 HTTP NOT FOUND。
我们为所有 3、测验、问题和答案提供了一个存储库界面。
根据this post 和我们看到的其他人,我们知道您可以发布到 /quiz-service/questions 并包含指向测验的链接,或者向测验端点发出第二个请求以添加问题。尽管如此,我们有什么办法可以做到以上几点?
提前致谢
【问题讨论】:
-
您遇到的具体错误是什么?
-
好吧,我的建议是使用更多的端点,不是因为你的建议不一定能实现,而是从长远来看它会非常混乱。尝试遵循 REST 模式并为每个模式设置一个端点,即一个用于添加答案,一个用于添加问题等。
-
您可以以此为指导,更直观地设计其余 API。特别是“使用 RESTful URL 和操作”部分vinaysahni.com/best-practices-for-a-pragmatic-restful-api
标签: java spring rest spring-data