处理Web API中数据合同变更的最佳做法

问题描述 投票:1回答:0

假定我的web API中有我的car对象,如下所示:

[DataContract(Name = "Car")]
public class Car
{
    [DataMember]
    private string Model;
}

然后,在Web API运行一段时间之后,我想再添加一个文件到car对象中,例如:

[DataContract(Name = "Car")]
public class Car
{
    [DataMember]
    private string Model;

    [DataMember]
    private int HorsePower;
}

但这有时会导致原始客户端中断。 我在互联网上进行搜索,发现使用API​​版本和数据合同版本可以解决此问题,通过以下类定义,我可以让新版本的API在新版本的数据合同上运行。

[DataContract(Name = "Car")]
public class CarV1
{
    [DataMember]
    private string Model;
}

[DataContract(Name = "Car")]
public class CarV2
{
    [DataMember]
    private string Model;

    [DataMember]
    private int HorsePower;
}

但这似乎不是一个非常灵活的方法,如果数据协定发展了很多,我的代码将有很多冗余,而且很难跟踪这么多版本。

有没有更好的方法来解决这个问题?

asp.net-web-api datacontract
© www.soinside.com 2019 - 2024. All rights reserved.