REST中的QueryParam vs Path变量

时间:2019-09-18 08:27:39

标签: rest

我正在编写Rest API。我在queryParam与path变量之间进行选择时遇到麻烦。我的api必须获取用户列表,并且需要参数(团队名称,请求者,分页参数)。仅当请求者有权查看团队成员时,才会返回用户列表

我现在正在使用下面提到的内容。我确定paginationParams应该在执行分页时使用queryParam,而teamName应该在我请求特定资源时使用路径变量。但是我不确定请求者。我应该使用路径还是查询请求者?

/Teams/{teamName}/Users?requestor={requester};paginationParams={paginationParams}

其他可能性是

/Teams/{teamName}/Users/{requester};paginationParams={paginationParams}

3 个答案:

答案 0 :(得分:1)

如果requestor参数有助于识别给定teamName的用户集合,则应将其包括在路径中。否则,如果用于排序或过滤项目,则最好将其作为查询参数发送。

根据您的描述,听起来requestor只是users资源的附加过滤器,根本无法识别它,因此是查询参数。另一种查看方式是问自己

  

基于requestor的用户集合是否有所不同,还是总是相同,并且只是根据访问权限被过滤掉了?

答案 1 :(得分:0)

如果请求者用户的标识符,则将其用作参数,否则将其用作查询

答案 2 :(得分:0)

您应将其作为查询参数传递,因为/Teams/{teamName}/Users/{requester}不是资源。资源就是您要的资源,即/Teams/{teamName}/Users