我们正在开发某种 Web API,它允许我们为分层结构设置值,如下所示:
<ROOT>
<COLLECTION_ELEMENT>
<SIMPLE_ELEMENT /> // alias = nail
<SIMPLE_ELEMENT /> // alias = hammer
<COLLECTION_ELEMENT>
<SIMPLE_ELEMENT /> // red
<SIMPLE_ELEMENT /> // green
</COLLECTION_ELEMENT>
</COLLECTION_ELEMENT>
....
<COLLECTION_ELEMENT>
<SIMPLE_ELEMENT /> // alias = nail
<SIMPLE_ELEMENT /> // alias = hammer
<COLLECTION_ELEMENT>
<SIMPLE_ELEMENT /> // red
<SIMPLE_ELEMENT /> // green
</COLLECTION_ELEMENT>
</COLLECTION_ELEMENT>
</ROOT>
如您所见,我们有两种类型的元素COLLECTION_ELEMENT
,可以包含SIMPLE_ELEMENT
和其他COLLECTION_ELEMENT
。层次结构中的每个字段都有一个别名,它实际上是暴露给伙伴的(我们不想暴露我们层次结构的结构),每个结构的别名都是唯一的。
问题是当我们的合作伙伴想要更新/设置时,我们真的不知道如何给他好的 API SIMPLE_ELEMENT
,这属于嵌套COLLECTION_ELEMENT
。例如,
现在我COLLECTION_ELEMENT
在根级别上有两个 s 。我想更新hammer
第二个COLLECTION_ELEMENT
条目的值。所以现在我们正在使用这样的结构hammer[1][2] - newHammerValue
。
1
表明它应该设置hammer
内部 2 个父集合元素的第一次出现。这工作得很好,但是如果我们有更复杂的结构和很多嵌套级别,我们可以有这样的东西hammer[1][2][3][5][2]
,在这种情况下,很难处理所有的错误和索引不匹配,并且它不会让我们的合作伙伴知道什么他现在正在设置。
那么问题来了,如何通过WebApi
使用友好的名称来设置层次结构值而不将结构本身暴露给用户?有任何想法吗?