Asp.net

我應該如何將多個參數傳遞給 ASP.Net Web API GET?

  • June 7, 2012

我正在使用 .Net MVC4 Web API 來(希望)實現一個 RESTful api。我需要將一些參數傳遞給系統並讓它執行一些操作,然後返回一個對象列表作為結果。具體來說,我傳遞了兩個日期並返回它們之間的記錄。我還在跟踪返回的記錄,以便後續呼叫不會在系統中重新處理。

我考慮了幾種方法:

  1. 將參數序列化為一個 JSON 字元串並在 API 中將其分開。 <http://forums.asp.net/t/1807316.aspx/1>
  2. 傳遞查詢字元串中的參數。

將多個查詢參數傳遞給restful api的最佳方法是什麼? 3. 在路由中定義參數:api/controller/date1/date2 4. 使用本來就可以讓我通過參數傳遞對象的 POST。 5. 研究 ODATA,因為 Web API(目前)支持它。我還沒有做太多,所以我對它不是很熟悉。

似乎正確的 REST 實踐表明何時提取數據,您應該使用 GET。但是,GET 也應該是無效的(不產生副作用),我想知道我的具體實現是否違反了這一點,因為我在 API 系統中標記了記錄,因此我產生了副作用。

這也讓我想到了支持可變參數的問題。如果輸入參數列表發生變化,那麼如果這種情況經常發生,那麼必須為選擇 3 重新定義您的路線會很乏味。如果在執行時定義參數可能會發生什麼……

無論如何,對於我的具體實現,哪種選擇(如果有)似乎最好?

這個記錄標記是什麼意思?如果這僅用於記錄目的,我將使用 GET 並禁用所有記憶體,因為您希望記錄此資源的每個查詢。如果記錄標記有其他目的,那麼 POST 就是要走的路。使用者應該知道,他的行為會影響系統,POST 方法是一個警告。

我認為最簡單的方法是簡單地使用AttributeRouting.

在您的控制器中很明顯,您為什麼要在全域WebApiConfig文件中使用它?

例子:

   [Route("api/YOURCONTROLLER/{paramOne}/{paramTwo}")]
   public string Get(int paramOne, int paramTwo)
   {
       return "The [Route] with multiple params worked";
   }

{}名稱需要與您的參數匹配。

就這麼簡單,現在你有一個單獨GET的在這個實例中處理多個參數。

引用自:https://stackoverflow.com/questions/10937524