Rest URL 标准 - 多路径参数

Rest URL Standards - Multiple Path Parameters

我们正在构建 restful 服务来提供员工数据。

我们有一个 api,它将 return 属于客户特定部门的员工列表。

这个api需要2个参数——clientId和departmentId

根据标准,以下哪项是为此 api 构建 restful url 的正确方法?

1) /client/{clientId}/department/{departmentId}/employees

2) /client/{clientId}/employees?departmentId={departmentId}

一个restfulurl可以有多个路径参数吗? 如果 yes/no 上述问题 - 为什么会这样?

IMO,两者看起来都不错。如果您希望能够列出所有员工,无论是哪个部门(并在必要时按部门过滤),请使用第二个。

第一个会使这个用例更复杂一些。除非你仍然提供一种方法让所有员工使用另一个 URI(不过我不推荐这样做,因为能够从不同的 URI 中找到相同的信息使得 API 难以理解)。

在RESTful APIs 中,路径参数用于标识资源(客户端、订单、博客post 等)。该资源通常是某些数据库中的一条记录。一些数据库表具有复合键,例如,如果您有一个系统存储有关多个不同客户的员工的数据,那么您的数据库中可能会有条目

name | client_id | department_id
John |    1      |      1
Jane |    2      |      1

两个客户都有一个 ID 为 1 的部门。

在那种情况下,如果目的是为给定客户识别给定部门中所有员工的列表资源,那么使用多个路径参数是有意义的。

 /client/{clientId}/department/{departmentId}/employees

但是,如果这更像是一种搜索 API,那么

可能更有意义
employees?age={age}&height={height}