【发布时间】:2014-11-07 06:55:43
【问题描述】:
我们来看下面的例子:
我们希望通过 RESTful API 公开公司和员工信息。
公司数据应该很简单:
GET api/v1/companies
GET api/v1/companies/{id}
员工属于一家公司,但我们仍想单独检索他们,那么哪种解决方案最好:
解决方案 1:使用子资源
获取公司的所有员工:
GET api/v1/companies/{companyId}/employees
获取特定员工:
GET api/v1/companies/{companyId}/employees/{employeeId}
解决方案 2:使用独立资源
获取公司的所有员工:
GET api/v1/employees?companyId={companyId}
获取特定员工:
GET api/v1/employees/{employeeId}
这两种选择似乎各有利弊。
对于子资源,当我想要检索单个员工时,我可能并不总是手头有 CompanyId。
有了独立资源,如果我们想要 RESTful,让公司的所有员工都应该使用子资源方法。
否则,我们可以使用混合,但这缺乏一致性:
获取公司的所有员工:
GET api/v1/companies/{companyId}/employees
获取特定员工:
GET api/v1/employees/{employeeId}
如果我们想忠于 RESTful 标准,在这种情况下采取什么最佳方法?
【问题讨论】:
标签: rest asp.net-web-api asp.net-web-api2 restful-url restful-architecture