我正在设计一个用于向“解决方案”表插入记录的 REST API。 “解决方案”有一个 solverID、problemID。我有两种不同的设计:
POST /solutions
并在 JSON 中传递包含解决方案内容的 solverID 和 problemID。或者将 solverID 和 problemID 放在 URI 中:
POST /users/:solver_id/problems/:problem_id/solutions
哪种设计更好?
最佳答案
在一致的层次结构中定义资源是一种很好的做法,这样它们就易于理解和预测。
假设这是检索问题的 URL -
GET /users/{solverId}/problems/{problemId}
它清楚地表明该问题属于 {solverId}。
以下 URL 将清楚地表明我们正在检索由 {solverId} 解决的问题的所有解决方案
GET /users/{solverId}/problems/{problemId}/solutions
要为 {problemId} 创建一个新的解决方案,您可以在
上发帖POST /users/{solverId}/problems/{problemId}/solutions
要检索特定的解决方案,您可以继续
GET /users/{solverId}/problems/{problemId}/solutions/{solutionId}
何时在路径和查询中使用 ID?
如果确定需要 ID 来标识资源,请在路径中使用它。在上面的场景中,由于需要所有三个 Id 来唯一标识一个解决方案,因此它们都应该在路径中。
假设您想检索在特定日期范围内给出的解决方案,您将使用以下内容
GET /users/{solverId}/problems/{problemId}/solutions?startDate={}&endDate={}
这里的 startDate 和 endDate 不能唯一标识一个资源,它们只是用来过滤结果的参数。
关于rest - 将 ID 发布到 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15415700/