2017-09-04 149 views
0

的最佳實踐,我們作爲什麼是通枚舉類型的WebAPI

public enum Country 
     { 
      UK = 1, 
      US = 2, 
      Japan = 4, 
      China = 8, 
      Germany = 16, 
     } 

我們想通過在URL參數枚舉一個枚舉類型,然後的WebAPI可以根據國家搜索結果

有時,我們允許將國家合併爲Country.UK | Country.China | Country.Germany(因此數字爲25)

在這種情況下,傳遞枚舉類型的最佳做法是什麼?我們是否應該通過號碼在URL國家= 25(不是用戶友好的),或者通過URL像國家=英國&國家=中國&國家=德國該網址會很長又醜....

+1

爲什麼不'國家= 25'? –

+1

爲什麼該網址需要用戶友好 - 您的用戶是否要輸入自己的網址 – PaulF

+0

@PaulF我的用戶需要使用網絡服務 – allencharp

回答

0

使用創建時Country.Us僅向國家/地區名稱添加URL的URL。

return RedirectToAction("SomeAction", "Controller", new { username = user.UserName, country = Country.Us }); 

此生成此網址: http://somesite.com/Controller/SomeAction?username=username&country=US

,這是很好的搜索引擎優化和用戶的觀點。而不是country=2這並不意味着什麼。

和獲取請求時:

[HttpGet] 
    public ActionResult SomeAction(string username, Country? country) 
    { 

如果你想多個國​​家傳遞到一個動作,我建議的名字向他們依然。不過,我想將名稱更改爲countries

http://somesite.com/Controller/SomeAction?username=username&countries=US&countries=UK

[HttpGet] 
    public ActionResult SomeAction(string username, Country[] country) 
    { 
+0

這不回答這個問題。問題是關於標誌組合案例。 – Kapol

+0

@卡波爾我明白這個問題是錯的。我將編輯答案 –

+0

Downvote removed :-) – Kapol

0

枚舉將與解析 「」 不是 「|」。 用Flags標記您的枚舉並在您的URL中使用「,」。

[Flags] 
public enum Country 
{ 
    UK = 1, 
    US = 2, 
    Japan = 4, 
    China = 8, 
    Germany = 16, 
} 

URL: 「路徑到你ControllerMethode」 + ?country=US,UK,Japan