表示REST端点中的左连接

表示REST端点中的左连接,rest,asp.net-web-api,api-design,Rest,Asp.net Web Api,Api Design,我正试图在我的api设计中保持合理的RESTful状态,其中一个端点需要生成类似于左连接的东西,我对我提出的任何选项都不太满意 我有一些设备资源,我需要一个端点,该端点将输出设备及其最后的AccessRecord。如果是最近配置的设备,有时他们不会有AccessRecord,但我仍然希望它在列表中。这感觉非常不平静,代表着一种不存在但需求就是需求的资源 我考虑过以下方法: 1/设备/上次访问记录 返回设备资源数组,并添加一个附加的last_access_记录字段 2/设备/上次访问记录 返回设备

我正试图在我的api设计中保持合理的RESTful状态,其中一个端点需要生成类似于左连接的东西,我对我提出的任何选项都不太满意

我有一些设备资源,我需要一个端点,该端点将输出设备及其最后的AccessRecord。如果是最近配置的设备,有时他们不会有AccessRecord,但我仍然希望它在列表中。这感觉非常不平静,代表着一种不存在但需求就是需求的资源

我考虑过以下方法:

1/设备/上次访问记录 返回设备资源数组,并添加一个附加的last_access_记录字段

2/设备/上次访问记录 返回设备的数组AccessRecord元组,如果AccessRecord不存在,则返回null

3/设备/上次访问记录 返回设备、AccessRecord元组的数组,其中不包括没有任何AccessRecords的设备,并且要求api使用者对/设备进行第二次调用,以获取所有设备并执行它们自己的差异

还有其他几个

从api设计的角度来看,3似乎是最正确的,2是很好的Erlang-y,但元组不能很好地转换为json


在RESTful api中是否有其他清晰/清晰的方式来表示此类内容,或者这只是一种情况,在这种情况下,内容会发生故障,您会做出权衡选择?

这可能会回答您的问题,我相信它同意您的选项2,如果值不为null,则将其删除:

我认为您的第一个或第二个选项工作良好,无论您显式地将null作为AccessRecord的值,还是在没有值的情况下忽略它,后者更节省空间/时间。如果AccessRecord是您设计的设备的属性,我认为选项1更合适;备选案文2另有规定