【发布时间】:2015-07-29 03:03:21
【问题描述】:
我试图在我的 api 设计中保持合理的 RESTful,并且我需要生成与左连接等效的端点之一,我对我提出的任何选项都不太满意.
我有一些设备资源,我需要一个端点来输出设备及其最后的访问记录。有时,如果它是最近配置的设备,他们将没有 AccessRecord,但我仍然希望它在列表中。这感觉非常非 REST,代表一种不存在但需要即需要的资源。
我考虑过以下方法:
1) /devices/last_access_records 返回添加了附加“last_access_record”字段的设备资源数组。
2) /devices/last_access_records 返回一个 Device 数组,AccessRecord 元组,如果 AccessRecord 不存在,则为 null。
3) /devices/last_access_records 返回一个 Device 数组,AccessRecord 元组,并且不包括没有任何 AccessRecords 的设备,并且要求 api 使用者再次调用 /devices 以获取所有设备并进行自己的差异。
还有其他几个。
从 api 设计的角度来看,3 似乎最正确,2 很好,而且 Erlang-y,但元组不能很好地转换为 json。
是否有其他一些清晰/干净的方法可以在 RESTful api 中表示这种事情,或者这只是事情发生故障并且您做出权衡选择的一种情况?
【问题讨论】:
标签: rest asp.net-web-api api-design