首页 > 解决方案 > 用户的 REST 路由资源

问题描述

我有很多资源,如产品、预订等。需要路线来按用户获取所有资源。

例如:

{GET} /bookings/user

我认为这是不正确的,因为这条路线会返回用户资源。还是我错了?

什么是正确的方法?

标签: restarchitectureroutingrestful-architecturerestful-url

解决方案


我认为这是不正确的,因为这条路线会返回用户资源。还是我错了?

它返回由 标识的资源的表示/bookings/user。那是什么资源?这取决于原始服务器。

不在乎您为标识符使用的拼写约定。就 REST 而言,/6414b60b-1ecb-4e28-8887-4bfe120810e7它是一个完全令人满意的资源标识符。

如果您想要人类可读的标识符,那也没关系。 RFC 3986鼓励这种做法:

URI 通常必须被人们记住,当 URI 由有意义或熟悉的组件组成时,人们更容易记住它。

您还应该记住,RFC 3986 区分 URI 中的分层和非分层信号

URI 语法是分层组织的,组件按重要性从左到右递减的顺序列出。--第 1.2.3 节

路径组件包含通常以分层形式组织的数据,以及非分层查询组件中的数据——第 3.3 节

查询组件包含非分层数据,这些数据与路径组件(第 3.3 节)中的数据一起用于标识 URI 方案和命名权限(如果有)范围内的资源——第 3.4 节

简而言之,如果您正在描述层次结构中描述的信息,那么使用路径段很有意义

我不返回用户和用户 ID,需要返回授权用户的所有预订。

这听起来像你在描述一个拼写像/my/bookings

一个可能有助于 URI 设计的启发式方法是考虑相对引用的好处;与文件系统一样,您可以使用点段导航到命名空间的根目录。

`/my/bookings` + `../profile` --> `/my/profile`

您可能不希望支持hackable URI原因;因此,您需要仔细考虑该约束及其含义。


推荐阅读