我正在使用Swashbuckle在我的C#控制器中包含Swagger文档 如果我有一个控制器,如下所示:
public class CommandController : ApiController
{
public CommandResult Cancel(...)
{ ...}
public CommandResult Status(...)
{ ...}
}
然后我可以通过http://localhost/swagger/ui/docs获取文档,并以HTML或任何其他格式生成该文档,其外观如下:
在上面,左侧的命令以控制器名称为前缀。
是否有一种方法可以删除控制器前缀,并且仅具有方法名称?
答案 0 :(得分:2)
我有类似的问题,我只是在官方文档(link)中找到了
选项2)提供自定义策略
// Startup.cs
services.AddSwaggerGen(c =>
{
...
// Use method name as operationId
c.CustomOperationIds(apiDesc =>
{
return apiDesc.TryGetMethodInfo(out MethodInfo methodInfo) ? methodInfo.Name : null;
});
})
// ProductsController.cs
[HttpGet("{id}")]
public IActionResult GetProductById(int id) // operationId = "GetProductById"
答案 1 :(得分:1)
(由NanoWar做出的)对此GitHub问题的答复似乎回答了您的问题:https://github.com/swagger-api/swagger-codegen/issues/6164
它涉及向您的SwaggerConfig添加一个OperationFilter。
答案 2 :(得分:0)
对于遇到 swagger 生成的接口、模型或服务名称问题的任何人,you may find this bash script helpful 会预处理 swagger 文件,并对生成的输出文件进行后处理。