rest - 将 ID 发布到 REST API

标签 rest

我正在设计一个用于向“解决方案”表插入记录的 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/

相关文章:

rest - 我应该在/resources/上使用 POST 请求还是在/resources/id/上使用 PUT 请求来创建新对象?

codeigniter 表单验证对于 json 数据总是错误的

rest - 如何使用 REST API 将文件和附件上传到 sobject 记录?

c# - 使用泛型接口(interface)的 WCF RESTful 服务

java - 指向这些方法的 uri 会是什么样子

java - 如何使用 Rest Assured-Java 为 JSON 正文中的参数赋值

java - “字段需要一个无法找到的类型的 bean。”使用 mongodb 的 spring Restful API 错误

java - Spring REST 返回 PDF - 响应状态 406( Not Acceptable )

c# - Entity Framework 父子表仅返回直接子项

python - 如何在更新 DRF 序列化器方法中确定 PATCH 请求