想象一下,我有一個動作的WebAPI定義如下:使用字典式的數據類型揚鞭
[HttpGet]
public string GetFirstValue(KeyValuePair<string, string>[] data)
{
data = data ?? new KeyValuePair<string, string>[0];
return data.Any() ? data.ElementAt(0).Value : "No items supplied";
}
我有一個模型,粘合劑,每一個查詢字符串參數轉換爲數組條目。
你會這樣稱呼它:
http://localhost/MyController/GetFirstValue?Fruit1=Apple&Fruit2=Banana
的模型粘結劑將其轉換成類似[{Fruit1=Apple},{Fruit2=Banana}]
一個數組,動作返回Apple
(因爲這是第一個條目)。
我想使用Swagger對此進行記錄,但Swagger UI的默認實現將最終生成一個將所有數據放入多個查詢字符串參數(稱爲data
)的URL,這不是我想要公開我的API的方式。
http://localhost:9102/MyController/GetFirstValue?data=Fruit1%3DBanana&data=Fruit2%3DApple
任何想法?我很高興在我的操作參數中使用不同的數據類型,例如Dictionary<string, string>
或IEnumerable或類似的 - 只要它是提供任意鍵/值的可擴展機制即可。
是的,這就是我的想法。我們確實需要任意參數的東西 - 在我們的例子中,它是用來指定一個過濾器列表,在過濾器上的數據鍵在運行時被定義。闕血清。 –
嗯,有點笨重,但如何有一個「鍵」參數和「價值」參數,這兩種類型的數組[字符串]?然後,人們可以調用http:// localhost/MyController/GetFirstValue?key = fruit1&value = apple&key = fruit2&value = banana –
是的,我也可以使用「?filter = key1%3Dvalue1&filter = key23Dvalue2」,但這兩種查詢在查詢時看起來都很笨重字符串已經是KV對! –