如何从 Swagger 文档方法中删除控制器名称

How to remove the Controller Name from Swagger Documentation methods

我正在使用 Swashbuckle 在我的 C# 控制器中包含 Swagger 文档 如果我有如下控制器:

public class CommandController : ApiController
{
    public CommandResult Cancel(...)
    { ...}

    public CommandResult Status(...)
    { ...}

}

然后我可以通过 http://localhost/swagger/ui/docs 获取文档并以 HTML 或任何其他格式生成文档,它将如下所示:

在上面左侧的命令以控制器名称为前缀。

有没有办法去掉控制器前缀,只保留方法名?

NanoWar 对此 GitHub 问题的回应似乎回答了您的问题:https://github.com/swagger-api/swagger-codegen/issues/6164

它涉及将 OperationFilter 添加到您的 SwaggerConfig。

我有类似的问题,我刚刚在官方文档中找到它(link)

Option 2) Provide a custom strategy

// 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"

对于遇到 swagger 生成的接口、模型或服务名称问题的任何人,you may find this bash script helpful 预处理 swagger 文件,post 处理生成的输出文件。