這要看情況。
假設您有一種類似於您所描述的方法。例如,
[RoutePrefix("api")]
public class api: ApiController {
[HttpGet]
[Route("Supressions")]
public HttpResponseMessage GetAll(HttpRequestMessage request){
///etc
}
}
無論您使用什麼參數,都會調用此方法。
但是,如果你做這樣的事情
[RoutePrefix("api")]
public class api: ApiController {
[HttpGet]
[Route("Supressions/{abc}")]
public HttpResponseMessage Get(HttpRequestMessage request, string abc){
///etc
}
}
您需要的參數。如果沒有它,你叫http://localhost/api/Suppressions,它將返回是這樣的:
{
"message": "No HTTP resource was found that matches the request URI 'http://localhost:64307/api/Suppressions'.",
"messageDetail": "No type was found that matches the controller named ''."
}
現在,當你有多個參數,你可以做這樣的事情,如果你不使用它們你的電話,它會抱怨以及
[RoutePrefix("api")]
public class api: ApiController {
[HttpGet]
[Route("Supressions")]
public HttpResponseMessage Get(HttpRequestMessage request, string abc, int id, int somethingElse){
///etc
}
}
這裏的調用將是這樣的:
http://localhost:64307/api/Suppressions?abc=asdas&id=13&somethingElse=45
希望THI s幫助你瞭解
感謝您的回覆。問題是,如果我的方法GetAll()不接受參數,我將如何在現有的調用中處理它?如果路由認爲它很好,我怎麼會知道用戶使用參數調用API? – user2337213
您可以使用[HttpContext.Current.Request.QueryString](https://msdn.microsoft.com/en-us/library/system.web.httprequest.querystring(v = vs.110))獲取查詢參數值。 ASPX)。 – returnsvoid
啊,對。謝謝你的幫助!這兩個答案都很有幫助,但我接受了這個答案,因爲答案是在查詢參數在路由過程中被忽略,它回答了原來的問題。並提醒我可以使用HttpContext.Current.Request.QueryString來獲取參數並根據需要返回404。 – user2337213