RESTful 使用带有 id 或其他参数的相同端点是一个好习惯吗?

RESTful using the same endpoint with id or other parameter is a good practice?

场景

我有一个案例,我想通过 id 获取一些东西,常见的案例,有时是日期。

例如:

/companies/:id/tickets/:id
/companies/:id/tickets/:date

根据我的研究,这不是一个好的做法,但我对此表示怀疑。

我是否应该使用不带 id 的端点并使用负载来获取日期?

例如:

/companies/:id/tickets

这应该return 是那家公司的所有票吧?因此,从有效载荷中获取一些日期数据并将其用作过滤器 return 对我来说似乎不合适。如果我这样做,我的端点将不会诚实地说明它们在做什么。

我应该在这里使用什么 RESTful 练习?

/companies/:id/tickets/:id - 这对于获取单个资源来说很好。

我认为大多数人会同意最好使用查询参数来过滤和搜索资源。事实上,JSONAPI 规范对此有专门的建议。

阅读 http://jsonapi.org/recommendations/#filtering 和其他建议,它们涵盖了像​​您这样的最常见的用例。

您还可以拥有一个独立的 tickets 资源并为其实施公司 ID 过滤器,一般来说,为同一资源设置多个 URL 是完全可以的。