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

时间:2018-03-19 00:33:26

标签: rest restful-architecture api-design restful-url

方案

我有一个案例,当我想要通过id,常见案例获取某些内容时,有时候会按日期获取。

例如:

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

从我的学习来看,这不是一个好习惯,但是我对此表示怀疑。

我应该使用没有 id 的端点并使用有效负载来获取日期吗?

例如:

/companies/:id/tickets

这应该归还该公司的所有门票吗?因此,从有效负载获取一些日期数据并将其用作过滤器,返回对我来说似乎不对。如果我这样做,我的终点就不会诚实地说明他们在做什么。

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

1 个答案:

答案 0 :(得分:1)

/companies/:id/tickets/:id - 这对于获取单个资源很合适。

我认为大多数人会同意过滤和搜索资源最好用查询参数完成。实际上,JSONAPI规范有具体建议。

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

您还可以拥有独立的tickets资源并为其实施公司ID过滤器,并且通常情况下,为同一资源提供多个网址是完全正常的。