添加参数和向后兼容性?

时间:2014-04-09 22:22:51

标签: c# asp.net-web-api backwards-compatibility

使用WebAPI我有一个安静的服务。

public SomeValue GetSomeValue()
{
}

我现在需要传入一个字符串,但它是可选的,默认值很好:

public SomeValue GetSomeValue(string language="EN")
{
}    

我无法更新的旧客户是否仍然可以拨打GetSomeValue()拨打电话,并发送默认值?或者我是否需要创建第二个方法GetSomeValueForLanguage(string language)GetSomeValue()在内部调用它?

2 个答案:

答案 0 :(得分:2)

更改方法以采用默认字符串参数;假设您的路由保持不变(在这种情况下language将附加到查询字符串),旧客户端将能够正常调用它。如果您要将language添加为路由令牌,请确保它在路由上是可选的,以便使用该操作的默认参数值。

答案 1 :(得分:0)

你可以试试这个:

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属性