【问题标题】:What is the recommended way of REST API url pattern for this?为此,推荐的 REST API url 模式是什么?
【发布时间】:2025-11-25 09:10:01
【问题描述】:

例如,每个video 都只有一个所有者。

如果我想添加listVideosByOwner的功能,下面哪个模式是首选? (更 RESTful)

  1. videos/owner/${ownerID}
  2. owner/${ownerID}/videos
  3. videos/byOwner/${ownerID}

有人对此有想法吗?

【问题讨论】:

    标签: rest url routes


    【解决方案1】:

    另一种方法是使用ownerId 的查询参数:

    GET /videos?ownerId=${ownerId}
    

    这是广泛使用的 filter-collection-by-property 模式。

    【讨论】:

      【解决方案2】:

      我更喜欢解决方案 nr.1,因为视频已绑定到所有者。如果您调用该方法来查看一个所有者的所有视频,则通过 REST 调用发送 ownerID 是有意义的。

      【讨论】:

        【解决方案3】:

        理想情况下,这将是一个 HTTP GET 资源,我将按以下方式设计我的资源 URL:

        GET /videos?ownerId=theOwnersId
        
        1. 这是有道理的,因为您正在向服务器查询视频。查询是一种幂等操作,类似于数据库检索;因此,它必须是 HTTP GET。
        2. 返回的 REST 资源应始终为复数而不是单数,因为服务器被认为具有您尝试查询的资源的集合。因此,视频而不是视频
        3. 当仅指定 /videos 时,理想的 REST 资源应返回其拥有的所有视频的列表。在您的情况下,我们需要能够根据 ownerId 进行查询。因此,我们必须将查询参数 ownerId 添加到您的 REST URL。
          • 在服务器端实现此 REST 资源时,我会检查请求 URL 是否有查询参数。如果是,我必须归还与该所有者相关的所有视频。如果不存在查询参数,我将返回我拥有的所有视频的结构化数据集。

        进一步阅读 - http://www.restapitutorial.com/

        【讨论】: