在具有不同路由的同一控制器中使用相同方法的 SetActualResponseType
SetActualResponseType with same method in the same controller with different routes
情景:
Web Api2.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");
问题:
是否可以用其他方法做同样的事情?当我尝试时,它显示错误:"the definition is already exists"
一种方法是使用 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
情景:
Web Api2.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");
问题:
是否可以用其他方法做同样的事情?当我尝试时,它显示错误:"the definition is already exists"
一种方法是使用 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