我是 ASP.NET Core 3.1-latest 版本控制的新手
假設我的產品附帶了 1.0 版中所示的模型:
public class MySelf
{
public string Name {get; set;}
public string CarName {get; set;}
//more properties follows
}
隨著這個模型的生產,現在我想獲得汽車名稱串列。
所以我想在現有模型類中引入一個新屬性,而不破壞 1.0 版或讓客戶選擇 v1 中有新屬性
public class MySelf
{
public string Name {get; set;}
public List<string> CarNames {get; set;} // new property
//more properties follows up to for example 8-10
}
如何為新模型執行此操作?
控制器示例
[ApiVersion("1.0")] ///existing version
[ApiVersion("1.1")] //New Version
public class SelfController : ControllerBase
{
[HttPost]
public IActionResult GetDetails(MySelf myselftDetails)
{
//implementation
}
[HttPost,MapToVersion("1.1")]
public IActionResult GetDetails(MySelf myselftDetails)
{
//for Version2 how do we solve that
}
}
uj5u.com熱心網友回復:
我們使用的一種技術是為每個版本啟動多個模型。
例如:
[ApiVersion("1.0")] ///existing version
[ApiVersion("2.0")] //New Version
public class SelfController : ControllerBase
{
[HttPost]
public IActionResult GetDetails(MySelfV1 myselftDetails)
{
}
[HttPost,MapToVersion("2.0")]
public IActionResult GetDetails(MySelfV2 myselftDetails)
{
}
}
假設每個版本都是沒有向后兼容性的重大更改。語意版本控制必須是從 v1 到 v2 的跳躍。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/446533.html
標籤:C# asp.net 核心 asp.net-core-webapi
