如果我具有以下条件:
MySimpleTestController : ApiController
{
}
是否可以在生成的API文档中将控制器名称显示为“我的简单测试”而不是“ MySimpleTest”?
我进行了搜索,但是我大多数都找到了使用@Api注释在Java中进行搜索的方法,但是我使用的是C#(.net 4.5.2)。
这里是one way,但需要在Controller中的每个路由上添加注释,因为我的控制器有很多路由,所以这很麻烦。有更好的方法吗?
答案 0 :(得分:1)
这就是我最终要做的事情:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class SwaggerControllerNameAttribute : Attribute
{
public string ControllerName { get; private set; }
public SwaggerControllerNameAttribute(string ctrlrName)
{
if (string.IsNullOrEmpty(ctrlrName))
{
throw new ArgumentNullException("ctrlrName");
}
ControllerName = ctrlrName;
}
}
然后将以下代码添加到配置中:
configuration.EnableSwagger(c =>
{
c.GroupActionsBy(apiDesc =>
{
var attribute = apiDesc.GetControllerAndActionAttributes<SwaggerControllerNameAttribute>();
if (attribute.Any())
{
return attribute.First().ControllerName;
}
else
{
return apiDesc.ActionDescriptor.ControllerDescriptor.ControllerName;
}
});
}
然后您可以执行以下操作:
[SwaggerControllerName("My Simple Test")]
public class MySimpleTestController : ApiController
{
}