【发布时间】:2018-03-09 01:00:38
【问题描述】:
我们目前正在尝试提出一套适合我们资源模型的 REST API。
资源的简化示例是:
CompanyInfo: {
totalNumberOfEmployees: Number,
employees: [...employees],
}
Employee: {
name: String,
}
在这种情况下,“CompanyInfo”就像数据库中不存在的虚拟资源。这是获取与公司资源相关的所有数据的捷径。其想法是减少 FE 上的逻辑量并创建更方便的端点。
我们当前的端点设计是:
GET /api/companyInfos/{companyId}/employees
GET,POST,PUT,DELETE /api/companyInfos/{companyId}/employees/{employeeId}
额外的 {companyId} 的原因是因为这些端点不返回“Employees”,而是返回一个“CompanyInfo”,其中包含嵌入在有效负载中的“Employees”。
这是为了避免聚合属性“totalNumberOfEmployees”在我们调用 POST 以创建新的“Employee”时不会更新
所以我的问题是:
这是解决“请求过多”或“FE 中逻辑过多”问题的正确做法吗?
端点返回与其 url 描述的完全不同的资源是否可以接受?
非常感谢:)
【问题讨论】:
标签: rest aggregate api-design endpoint