Web Api 为所有参数设置默认值
WebApi set defualt values to all parameters
我正在将我们的服务器从 SOAP 迁移到 REST。我正在使用 swashbuckle 生成 api 文档并使用 autorest 来创建客户端。
我有很多带有签名的方法允许:
1) 可空值
2) 允许空值的字符串
例如这样的方法:
public void SetGlobalDataForSite(string wsKey, int? siteId, string title,
string keywords, string homepagetitle, bool isValidValue)
不需要 siteId、关键字或主页标题的值。
据我所知,要允许这些值为空,我应该将方法转换为如下形式:
public void SetGlobalDataForSite(string wsKey, string title, bool isValidValue,
int? siteId = null, string keywords = null, string homepagetitle = null)
现在这会导致很多问题:
1) 由于我正在更改签名,因此很容易出错
2) 工作量很大,我有大约 300 种方法可以更改
3) 我还需要更改客户端代码,这会导致更多错误
有没有办法在不更改签名的情况下将这些属性标记为可为空?也许我错过了什么。为大多数方法创建一个请求 class 可以工作,但我又生成了很多无用的代码。
任何想法将不胜感激:)
你将不得不付出一次努力来转换——通常安全选项可以是对象形式的接受参数(它可以是 JObject 或 class 甚至最新版本的 C# 中的 Tuple )
我正在将我们的服务器从 SOAP 迁移到 REST。我正在使用 swashbuckle 生成 api 文档并使用 autorest 来创建客户端。
我有很多带有签名的方法允许:
1) 可空值
2) 允许空值的字符串
例如这样的方法:
public void SetGlobalDataForSite(string wsKey, int? siteId, string title,
string keywords, string homepagetitle, bool isValidValue)
不需要 siteId、关键字或主页标题的值。
据我所知,要允许这些值为空,我应该将方法转换为如下形式:
public void SetGlobalDataForSite(string wsKey, string title, bool isValidValue,
int? siteId = null, string keywords = null, string homepagetitle = null)
现在这会导致很多问题:
1) 由于我正在更改签名,因此很容易出错
2) 工作量很大,我有大约 300 种方法可以更改
3) 我还需要更改客户端代码,这会导致更多错误
有没有办法在不更改签名的情况下将这些属性标记为可为空?也许我错过了什么。为大多数方法创建一个请求 class 可以工作,但我又生成了很多无用的代码。
任何想法将不胜感激:)
你将不得不付出一次努力来转换——通常安全选项可以是对象形式的接受参数(它可以是 JObject 或 class 甚至最新版本的 C# 中的 Tuple )