例如,我有以下实体:客户,报告。客户可能有很多报告,我认为单个报告管理的端点应该像这样嵌套:
/clients/{client_id}/reports/{report_id}
至于一位客户的所有报告,预期会:
/clients/{client_id}/reports
但是应该如何寻找一个端点来获取所有客户端的所有报告,以保持API的一致性和良好的设计。
我的方法:
- (我在某些Google API中看到了它)使用“-”代替它,并将其解析为“全部”:
/clients/-/reports
这使端点格式保持不变,但看起来有点不正常,找不到任何以此方式建议的rfc。
- 为所有报告创建一个单独的端点:
/reports
但是要获得客户报告,它仍然是:
/clients/{client_id}/reports
- 重构端点以使“客户端”不是父代,而只是一个过滤器参数:
/reports?client={client_id}
-一位客户的报告
/reports
-所有客户的报告
如果添加新的端点以发布特定客户端的报告,则该外观可能很难看,因为它将是带有URL中参数的POST请求。
还有其他建议吗?