【发布时间】:2014-03-04 16:04:32
【问题描述】:
我正在编写一个简单的库,它提供对具有多个可选参数的 REST Web 服务的访问。
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);
}
}
[...]
}
这更适合一些,但我很好奇是否有更好的方法来解决此类问题,而无需创建长 if 语句或手动创建集合。
【问题讨论】:
-
顺便说一下,一个有效的查询字符串是用&符号分隔的(
&),并以问号开头。 -
已修复,感谢提示;)
-
附带说明:您可能需要研究 ServiceStack (servicestack.net),它提供了创建 REST 应用程序的轻量级功能。
标签: c#