【问题标题】:What's the correct way to create an endpoint in a API REST在 API REST 中创建端点的正确方法是什么
【发布时间】:2021-06-01 21:24:43
【问题描述】:
我正在绘制我的 API 路由。
用户有项目,项目有演员,演员有地址。
没有演员就没有地址,没有项目就没有演员,没有用户就没有项目。
这是构建端点的正确方法吗?
GET /users/{user_id}/projects/{project_id}/actors/{actor_id}/addresses
【问题讨论】:
标签:
api
rest
endpoint
restful-url
【解决方案1】:
没有 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
那很好。其他拼写也可以fine(提示:URL 缩短器工作)。
从广义上讲,您可以通过考虑人类必须查看 URI 的不同上下文(API 文档、浏览器历史记录、访问日志等)来选择标识符拼写,然后选择适合的拼写至少其中一项设置。