首页 > 解决方案 > 如何在公共 API 合约中更好地组织 XML 数据中任意类型的存储?

问题描述

我设计了一个带有 XML 格式数据的公共 API。在返回 API 的 XML 对象中,有任意类型的字段。如何组织数据存储,使集成商在实现 API 时问题尽可能少?最重要的是,我担心添加一个新的任意类型会破坏数据契约,我想保持向后兼容性。

示例_1:

<Data>
    <Value xsi:type="A">
        <Desc>description<Desc/>
    <Value/>
    <Value xsi:type="B">
        <Index>1</Index>
        <Count>2</Count>
    </Value>
</Data>

示例_2:

<Data>
    <Value xsi:type="A">
        <Desc>description<Desc/>
    <Value/>
    <Value xsi:type="B">
        <Index>1</Index>
        <Count>2</Count>
    </Value>
    <Value xsi:type="C">
        <Name>Alex</Name>
    </Value>
</Data>

当我以这种方式延长合同时,这是正常的做法吗?(示例_1 -> 示例_2)

标签: xmlapi

解决方案


xsi:type="B"

这是合同的严重并发症,为了简化,用简单的 {string-string}[] 字典替换任意类型


推荐阅读