在 API REST 中创建端点的正确方法是什么

问题描述

我正在绘制我的 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 的文档、浏览器历史记录、访问日志等)的不同上下文来选择标识符拼写,并选择在以下情况下运行良好的拼写至少其中一项设置。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...