【发布时间】:2016-10-29 16:10:41
【问题描述】:
我需要将以下两个资源表示为两个不同的实体(想象它们实际上是两个不同的资源,即来自两个不同数据存储的相似资源):
// Resource 1 from Data source 1:
{
'id' : 1,
'foo' : 'asd',
'bar' : 'cbd',
'provider' : 'data_store_1'
}
// Resource 2 from Data source 2:
// lets say 'foo' and 'bar' were patched for this entity
// to matched the entity definition, (i.e in Data store 2, both
// 'foo' and 'bar' does not map to an existing column )
{
'id' : 1,
'foo' : null,
'bar' : null ,
'provider' : 'data_store_2'
}
由于这两个实体具有相同的标识符(即id),因此仅使用 ID 很难识别哪个是哪个。
我想到的一件事是修补标识符:
resource 1 => id: 'data_store_1_1' // URI: resource/data_store_1_1
resource 2 => id: 'data_store_2_1' // URI: resource/data_store_2_1
所以我现在可以清楚地识别它们。我也考虑过散列这些值以隐藏实现细节或出于美观原因
resource 1 => id: '6c2d2dbc992b435efd7d8e62e3637734' // resource/6c2d2dbc992b435efd7d8e62e3637734 ('data_store_1_1')
resource 2 => id: '4df3bb9d8d520f61a28972a550e6a84c' // resource/4df3bb9d8d520f61a28972a550e6a84c ('data_store_2_1')
问题
这是区分这两种资源的一种可接受的方式吗?
【问题讨论】:
标签: rest asp.net-web-api restful-architecture api-design