为此推荐的 REST API url 模式是什么?
What is the recommended way of REST API url pattern for this?
例如,每个 video
都有一个且只有一个所有者。
如果我想增加listVideosByOwner
的功能,下面哪种模式是首选? (更多RESTful)
videos/owner/${ownerID}
owner/${ownerID}/videos
videos/byOwner/${ownerID}
有人对此有想法吗?
我更喜欢解决方案 nr.1,因为视频与所有者绑定。如果您调用该方法来查看一个所有者的所有视频,则通过 REST 调用发送所有者 ID 是有意义的。
另一种方法是为 ownerId
:
使用查询参数
GET /videos?ownerId=${ownerId}
这是广泛使用的过滤器集合 属性 模式。
理想情况下,这将是一个 HTTP GET 资源,我将按以下方式设计我的资源 URL:
GET /videos?ownerId=theOwnersId
- 这是有道理的,因为您正在向服务器查询视频。查询是一种幂等操作,类似于数据库检索;因此,它必须是 HTTP GET。
- 被 returned 的 REST 资源应该始终是复数而不是单数,因为服务器被认为具有您要查询的资源的集合。因此,视频而不是视频。
- 当只指定
/videos
时,理想的 REST 资源应该 return 它拥有的所有视频的列表。在您的情况下,我们需要的是能够基于 ownerId 进行查询。因此,我们必须将查询参数 ownerId
添加到您的 REST URL。
- 在服务器端实现此 REST 资源时,我会检查请求 URL 是否有查询参数。如果是,我必须 return 所有与该所有者关联的视频。如果不存在查询参数,我会 return 我拥有的所有视频的结构化数据集。
进一步阅读 - http://www.restapitutorial.com/
例如,每个 video
都有一个且只有一个所有者。
如果我想增加listVideosByOwner
的功能,下面哪种模式是首选? (更多RESTful)
videos/owner/${ownerID}
owner/${ownerID}/videos
videos/byOwner/${ownerID}
有人对此有想法吗?
我更喜欢解决方案 nr.1,因为视频与所有者绑定。如果您调用该方法来查看一个所有者的所有视频,则通过 REST 调用发送所有者 ID 是有意义的。
另一种方法是为 ownerId
:
GET /videos?ownerId=${ownerId}
这是广泛使用的过滤器集合 属性 模式。
理想情况下,这将是一个 HTTP GET 资源,我将按以下方式设计我的资源 URL:
GET /videos?ownerId=theOwnersId
- 这是有道理的,因为您正在向服务器查询视频。查询是一种幂等操作,类似于数据库检索;因此,它必须是 HTTP GET。
- 被 returned 的 REST 资源应该始终是复数而不是单数,因为服务器被认为具有您要查询的资源的集合。因此,视频而不是视频。
- 当只指定
/videos
时,理想的 REST 资源应该 return 它拥有的所有视频的列表。在您的情况下,我们需要的是能够基于 ownerId 进行查询。因此,我们必须将查询参数ownerId
添加到您的 REST URL。- 在服务器端实现此 REST 资源时,我会检查请求 URL 是否有查询参数。如果是,我必须 return 所有与该所有者关联的视频。如果不存在查询参数,我会 return 我拥有的所有视频的结构化数据集。
进一步阅读 - http://www.restapitutorial.com/