当前用户与 ID 的 REST 端点
REST Endpoints for Current User vs ID
就 REST API 而言,通常遵循哪种结构更好?
假设所有资源为 GET
/PUT
/POST
/DELETE
。
1) 将当前登录的用户用于 /users/**/* 路由。
/users
/users/password
/users/email
/users/preferences
/users/documents
/documents/:id
2) 具有带 ID 的绝对路径并对当前登录的用户使用 /users/:id
?
/users
/users/:id/password
/users/:id/email
/users/:id/preferences
/preferences/:id
重要吗?
两个都很好。为每个用户创建唯一端点的好处在于,有一天您可以允许用户 X 访问有关用户 Y 的信息。
我在最近 API 中遵循的模式是为每个用户创建一个唯一的端点,但是 1 个端点 /current-user
重定向到 /user/:some-id
.
A url 可能表示身份。其他资源可能将用户称为某物的 'creator' 或 'modifier' 很有意义,在这些地方您可能想使用 url (而不仅仅是用户 ID ).
如果您引用的资源可以是多个,您应该选择
/resource/resource_id
在上面的例子中,用户只能是当前的人,所以使用像 /users/user_id
这样的模式听起来很奇怪。因为,您将不得不处理不同的情况,例如如果登录 USER A 触发具有不同用户 ID USER B[= 的 api 调用会怎样? 22=]??
您可以使用 /profile
之类的命名空间来管理电子邮件、姓名、图像等。您不必将其设置为 /users/profile
,因为它暗示数据将要被当前登录用户操作/访问。
就 REST API 而言,通常遵循哪种结构更好?
假设所有资源为 GET
/PUT
/POST
/DELETE
。
1) 将当前登录的用户用于 /users/**/* 路由。
/users
/users/password
/users/email
/users/preferences
/users/documents
/documents/:id
2) 具有带 ID 的绝对路径并对当前登录的用户使用 /users/:id
?
/users
/users/:id/password
/users/:id/email
/users/:id/preferences
/preferences/:id
重要吗?
两个都很好。为每个用户创建唯一端点的好处在于,有一天您可以允许用户 X 访问有关用户 Y 的信息。
我在最近 API 中遵循的模式是为每个用户创建一个唯一的端点,但是 1 个端点 /current-user
重定向到 /user/:some-id
.
A url 可能表示身份。其他资源可能将用户称为某物的 'creator' 或 'modifier' 很有意义,在这些地方您可能想使用 url (而不仅仅是用户 ID ).
如果您引用的资源可以是多个,您应该选择
/resource/resource_id
在上面的例子中,用户只能是当前的人,所以使用像 /users/user_id
这样的模式听起来很奇怪。因为,您将不得不处理不同的情况,例如如果登录 USER A 触发具有不同用户 ID USER B[= 的 api 调用会怎样? 22=]??
您可以使用 /profile
之类的命名空间来管理电子邮件、姓名、图像等。您不必将其设置为 /users/profile
,因为它暗示数据将要被当前登录用户操作/访问。