我正在写一个简单的库,它提供对具有多个可选参数的REST Webservice的访问。循环(可选)方法参数
Sample URL:
http://localhost/doSomething?a=a&b=b&c=c
所以我的出发点是一个带可选参数的方法。像这样:
public byte[] DoSomething(string a = null, string b = null, string c = null)
{
string query = "doSomething";
//Get Parameters
if (a != null)
{
//Handle first ?
query = String.Format("{0}&{1}={2}", query, "a", a);
}
[...]
}
你可以想象,如果你有很多参数,这会导致一个很长的方法。减少代码大小的一种方式是各参数添加到集合:
public byte[] DoSomething(string a = null, string b = null, string c = null)
{
string query = "doSomething";
var parameters = new Dictionary<string, string> {{"a", a}, {"b", b}, {"c", c}};
foreach (var parameter in parameters)
{
if (!String.IsNullOrEmpty(parameterPair.Value))
{
//Handle first ?
query = String.Format("{0}&{1}={2}", query, parameter.Key, parameter.Value);
}
}
[...]
}
这是更suiteable了一点,但我很好奇,如果有解决上述问题的一个更好的方法,而无需创建更长久语句或手动创建集合。
顺便说一句,一个有效的查询字符串用&符号('&')分开,并以问号开头。 – Diamondo25
固定,谢谢你的提示;) –
只是一个侧面说明:你可能想看看ServiceStack(https://servicestack.net/),它提供了一个轻量级的能力来创建REST应用程序。 – Samuel