![](/img/trans.png)
[英]how to pass multiple querystring parameters in asp.net WEB API
[英]How do I handle multiple parameters as an OR in a Web API querystring?
假設我有以下網址:
api.XXX.com/cities?risk=a,b&rating=x,y
我想要的是風險類別為A或B且評級為X或Y的城市列表。我應該如何實現?
我了解我可以獲取“風險”和“評級”鍵的值,但是那又如何呢? 最好只解析字符串並使用switch
語句嗎? 還是有更好的方法?
一個更標准的方法是:
api.XXX.com/cities?risks=a&risks=b&ratings=x&ratings=y
可以通過類似以下的控制器動作來處理:
[HttpGet]
public async Task<IHttpActionResult> SearchCities(
List<string> risks,
List<string> ratings)
{
var results = this.dbContext.Cities.AsQueryable();
if(risks.Any())
{
results = results.Where(c => c.Risks.Any(cr => risks.Contains(cr.Code));
}
if(ratings.Any())
{
results = results.Where(c => ratings.Contains(c.Rating));
}
...
}
類似的答案在這里 。
我建議創建一個POCO來表示該端點將要接收的選項:
public class CitySearchOptions
{
public List<string> Risk { get; set; }
public List<string> Rating { get; set; }
}
然后,您可以在控制器簽名中使用[FromUri]
屬性,以將查詢字符串自動反序列化到POCO中。 從那里,您可以輕松實現邏輯以對接收到的值進行操作。
public async Task<IHttpActionResult> SearchCities([FromUri] CitySearchOptions options)
請注意,以上是偽代碼,如果不對查詢字符串的格式進行一些調整,就可能無法立即使用。 這個問題表明,對於基於列表的查詢參數,您應該喜歡這樣的格式:
/cities?risk=a&risk=b&rating=x&rating=y
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.