gpt4 book ai didi

c# - 如何使用友好的名称通过 Web API 设置层次结构值,而不将结构本身暴露给用户?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:13 25 4
gpt4 key购买 nike

我们正在开发某种 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。层次结构中的每个字段都有一个别名,实际上是暴露给合作伙伴的(我们不想暴露我们的层次结构),每个结构的别名都是唯一的。

问题是当我们的合作伙伴想要更新/设置属于嵌套COLLECTION_ELEMENTSIMPLE_ELEMENT 时,我们并不知道如何为他提供良好的API。例如,

现在我在根级别上有两个 COLLECTION_ELEMENT。我想更新第二个 COLLECTION_ELEMENT 条目的 hammer 值。所以现在我们正在使用这样的结构 hammer[1][2] - newHammerValue

1 表明它应该在 2 个父集合元素中设置第一次出现的 hammer。这工作得很好,但如果我们有更复杂的结构,有很多嵌套级别,我们可以有这样的东西 hammer[1][2][3][5][2],在那个在这种情况下,很难处理所有错误和索引不匹配,而且我们的合作伙伴也不知道他现在正在设置什么。

那么问题是,如何使用友好的名称通过 WebApi 设置层次结构值,而不将结构本身暴露给用户?有什么想法吗?

最佳答案

如果您的集合元素有别名,那么您将能够使用自然的 URI 路径结构,该结构旨在映射层次结构。

<ROOT>
<COLLECTION_ELEMENT> //alias = foo

<SIMPLE_ELEMENT /> // alias = nail
<SIMPLE_ELEMENT /> // alias = hammer

<COLLECTION_ELEMENT> /alias = bar
<SIMPLE_ELEMENT /> // red
<SIMPLE_ELEMENT /> // green
</COLLECTION_ELEMENT>

</COLLECTION_ELEMENT>
....
<COLLECTION_ELEMENT> //baz

<SIMPLE_ELEMENT /> // alias = nail
<SIMPLE_ELEMENT /> // alias = hammer

<COLLECTION_ELEMENT> //blunk
<SIMPLE_ELEMENT /> // red
<SIMPLE_ELEMENT /> // green
</COLLECTION_ELEMENT>

</COLLECTION_ELEMENT>
</ROOT>

有了这个层次结构,你的例子就变成了

 /baz/hammer

我是否遗漏了一 block 拼图?

关于c# - 如何使用友好的名称通过 Web API 设置层次结构值,而不将结构本身暴露给用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17470704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com