我正在寫一個簡單的庫,它提供對具有多個可選參數的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