Azure API 具有相同动词和不同路由的应用程序多个操作会产生 swagger 错误
Azure API App multiple actions with same verb and different routes gives swagger error
我有一个带有这些 GET 的 ApiController:
public class UsersController : ApiController
{
public IHttpActionResult GetUsers()
{
[...]
}
public IHttpActionResult GetUsers(guid ID)
{
[...]
}
[Route("api/Users/{CodeA}/{CodeB}")]
public IHttpActionResult GetUsers(string CodeA, string CodeB)
{
[...]
}
}
webapiconfig.cs中的路由是标准路由:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}/",
defaults: new { id = RouteParameter.Optional}
);
尝试使用 swaggerUI 时出现 500 错误,通过 fiddler 我得到:
Swagger 2.0 不支持:路径 'api/utenti' 和方法 'GET' 的多个操作。请参阅配置设置 - \"ResolveConflictingActions\" 以获得潜在的解决方法"
如果我删除最后一个 GET 方法,swagger 会正确解析 api。我从许多来源了解到,通过指定不同的路由可以解决问题,并且我试图通过将 Route 属性添加到最后一个操作来实现这一点。
有人可以指出我正确的方向吗?
提前致谢。
以下代码对我有用:
[Route("users")]
public class UsersController : ApiController
{
[Route("")]
public IHttpActionResult GetUsers()
{
string test = "";
return Ok(test);
}
[Route("{id}")]
public IHttpActionResult GetUsers(Guid id)
{
string test = "";
return Ok(test);
}
[Route("{CodeA}/{CodeB}")]
public IHttpActionResult GetUsers(string CodeA, string CodeB)
{
string test = "";
return Ok(test);
}
}
我有一个带有这些 GET 的 ApiController:
public class UsersController : ApiController
{
public IHttpActionResult GetUsers()
{
[...]
}
public IHttpActionResult GetUsers(guid ID)
{
[...]
}
[Route("api/Users/{CodeA}/{CodeB}")]
public IHttpActionResult GetUsers(string CodeA, string CodeB)
{
[...]
}
}
webapiconfig.cs中的路由是标准路由:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}/",
defaults: new { id = RouteParameter.Optional}
);
尝试使用 swaggerUI 时出现 500 错误,通过 fiddler 我得到:
Swagger 2.0 不支持:路径 'api/utenti' 和方法 'GET' 的多个操作。请参阅配置设置 - \"ResolveConflictingActions\" 以获得潜在的解决方法"
如果我删除最后一个 GET 方法,swagger 会正确解析 api。我从许多来源了解到,通过指定不同的路由可以解决问题,并且我试图通过将 Route 属性添加到最后一个操作来实现这一点。
有人可以指出我正确的方向吗?
提前致谢。
以下代码对我有用:
[Route("users")]
public class UsersController : ApiController
{
[Route("")]
public IHttpActionResult GetUsers()
{
string test = "";
return Ok(test);
}
[Route("{id}")]
public IHttpActionResult GetUsers(Guid id)
{
string test = "";
return Ok(test);
}
[Route("{CodeA}/{CodeB}")]
public IHttpActionResult GetUsers(string CodeA, string CodeB)
{
string test = "";
return Ok(test);
}
}