簡體   English   中英

SetActualResponseType使用相同方法在同一控制器中使用不同的路由

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM