问题描述
我正在绘制我的 API 路由。
用户有项目,项目有演员,演员有地址。
没有演员就没有地址,没有项目就没有演员,没有用户就没有项目。
这是构建端点的正确方法吗?
GET /users/{user_id}/projects/{project_id}/actors/{actor_id}/addresses
解决方法
没有 REST 端点这样的东西。有资源。 -- Fielding,2018
您在这里似乎要问的是如何为您的 resource 设计标识符。
REST 不关心您为资源标识符使用什么拼写约定,只要它们满足 RFC 3986 描述的产生式规则。
如果您希望利用 HTML 表单,将数据加载到查询部分的标识符非常方便:
GET /addresses?user={user_id}&project={project_id}&actor=actor_id
但是如果您希望使用点段来引用其他资源,那么这种设计并不是特别方便。
选择一些由 URI Template 描述的替代方案将使一些事情变得更容易。
/users/{user_id}/projects/{project_id}/actors/{actor_id}/addresses
那很好。其他拼写也没问题(提示:URL 缩短器工作)。
从广义上讲,您可以通过考虑人们必须查看 URI(您的 API 的文档、浏览器历史记录、访问日志等)的不同上下文来选择标识符拼写,并选择在以下情况下运行良好的拼写至少其中一项设置。