REST:GET过滤约定

时间:2014-11-18 11:57:29

标签: rest http asp.net-web-api asp.net-web-api2 api-design

遵循REST方法时,以下哪个GET请求更正确:

v1/companies/10/employees/state=approved

v1/companies/10/employees?state=approved

网上似乎有混合使用。

2 个答案:

答案 0 :(得分:1)

只有第二种方法对我有意义。在RESTful方法中,您必须使用QueryString来过滤返回的资源。在这种情况下,在您的查询字符串中添加要用作过滤器的资源属性。例如:

v1/companies/10/employees?state=approved&attribute2=value&attribute3=value

第一个URI对我没有任何意义,因为你在URI和QueryString之间进行混合来过滤结果。

v1/companies/10/employees/state=approved

为了澄清,让我们看看另一个例子。如果“州”和“已批准”是资源,则下面的URI才有意义。但如果他们只是员工的属性,那么它不是RESTful。请记住,考虑到您正在暴露资源而不是方法或操作,设计您的URI。

v1/companies/10/employees/state/approved

答案 1 :(得分:0)

我认为这取决于国家是否是一种资源。 REST约定是Controller / Resource / Sub -Resource,例如: 书籍/漫画/ SuperMan / FirstEditon而不是 书籍/漫画/超人?版= FirstEdition

更具可读性,表示FirstEdition是资源而非状态。