添加参数和向后兼容性
本文关键字:兼容性 参数 添加 | 更新日期: 2023-09-27 17:57:49
使用WebAPI,我有一个restful服务。
public SomeValue GetSomeValue()
{
}
我现在需要传入一个字符串,但它是可选的,默认值很好:
public SomeValue GetSomeValue(string language="EN")
{
}
我无法更新的旧客户端只向GetSomeValue()
发送调用,并且会发送默认值吗?还是我需要创建第二个方法GetSomeValueForLanguage(string language)
,GetSomeValue()
在内部调用它?
更改方法以获取默认字符串参数;假设您的路由保持不变(在这种情况下,language
将被附加到查询字符串中),旧客户端将能够称之为fine。如果要将language
添加为路由令牌,请确保它在路由上是可选的,以便使用该操作的默认参数值。
你可以试试这个:
public classs MyParams
{
public string language{set;get;}
}
然后将您的方法更改为:
public SomeValue GetSomeValue([FromBody] MyParams obj)
{
if(String.IsNullOrEmpty(obj.language) obj.language="en";
//you code
}
如果您的HTTP方法是GET,则应使用FormUrl
属性而不是FromBody
属性