[英]How to set different routes for the same Controller method with different parameters?
[英]SetActualResponseType with same method in the same controller with different routes
場景:
Web API 2.2
我不知道這是否是最好的方法,但是這種方法已經在生產中,我無法更改。
我有一個具有相同動詞(多個GET)但具有不同路線的控制器。 例如,控制器foo:
[Route("foo/{Id}")]
public HttpResponseMessage Get(int Id) //Return objectA
[Route("foo/Search")]
public HttpResponseMessage Get(string criteria) //Return objectB
[Route("foo/Anything")]
public HttpResponseMessage Get(anything bar) //Return objectC
現在,我正在創建Web API幫助文檔,並在HelpPageConfig.cs
,我需要通過以下方式指定響應類型(對於所有方法而言都是不同的):
config.SetActualResponseType(typeof(objectA), "foo", "Get");
題:
可以用其他方法做同樣的事情嗎? 當我嘗試時,它顯示一個錯誤:“定義已經存在”
一種方法是使用SetActualResponseType的另一重載,該重載接受參數名稱:
config.SetActualResponseType(typeof(ObjectA), "Home", "Get", "Id");
config.SetActualResponseType(typeof(ObjectB), "Home", "Get", "criteria");
config.SetActualResponseType(typeof(ObjectC), "Home", "Get", "bar");
但是,由於您使用的是Web Api 2.2,因此不必理會SetActualResponseType,而只需執行以下操作:
[Route("foo/{Id}")]
[ResponseType(typeof(ObjectA))]
public HttpResponseMessage Get(int Id) //Return objectA
[Route("foo/Search")]
[ResponseType(typeof(ObjectB))]
public HttpResponseMessage Get(string criteria) //Return objectB
[Route("foo/Anything")]
[ResponseType(typeof(ObjectC))]
public HttpResponseMessage Get(anything bar) //Return objectC
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.