You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Swagger中修改Web API控制器方法名称无效的问题求助

解决Swagger中Web API方法显示名称不更新的问题

我懂你遇到的困惑——你试着用[HttpGet(name="newMethodName")]修改Swagger里的方法显示名,但完全没效果对吧?其实这个name参数根本不是用来控制Swagger展示的!它的作用是给路由命名,方便你在项目里通过路由名生成URL,和Swagger的UI显示半毛钱关系都没有,所以没变化太正常了。下面给你几个实用的解决方案:

方法1:用[Display]/[DisplayName]快速修改

这是最简便的方式,只需要给你的Action方法加上[Display(Name="自定义方法名")]或者[DisplayName("自定义方法名")]特性,Swagger会自动读取这个名称来展示。记得要先引用System.ComponentModel命名空间哦。

修改后的控制器代码示例:

using System.ComponentModel;
using Microsoft.AspNetCore.Mvc;

public class PrimeCalculatorController : ControllerBase { 
    [HttpGet]
    [Display(Name = "获取素数计算结果")] // 也可以用[DisplayName("获取素数计算结果")]
    public IEnumerable<string> Get() { 
        // 业务逻辑
        return new string[] { "value1", "value2" }; 
    } 
}

方法2:用Swagger专属特性精准控制

如果你想同时自定义方法的展示名称、摘要描述甚至操作ID,可以用Swashbuckle提供的[SwaggerOperation]特性。首先要确保你已经安装了Swashbuckle.AspNetCore.SwaggerAnnotations这个NuGet包(没装的话去NuGet包管理器里搜一下安装就行)。

修改后的代码示例:

using Microsoft.AspNetCore.Mvc;
using Swashbuckle.AspNetCore.Annotations;

public class PrimeCalculatorController : ControllerBase { 
    [HttpGet]
    [SwaggerOperation(OperationId = "GetPrimeCalculationResults", Summary = "获取素数计算结果")]
    public IEnumerable<string> Get() { 
        // 业务逻辑
        return new string[] { "value1", "value2" }; 
    } 
}

这里的Summary会直接显示在Swagger的方法列表里,OperationId则是该方法在Swagger文档里的唯一标识,能帮你更精准地管理API定义。

再补一句:为啥原来的方法没用?

再给你理清楚:[HttpGet]里的name参数是给路由起名字用的,比如你在代码里写Url.RouteUrl("newMethodName")生成URL时才会用到它,和Swagger的UI展示完全是两个不同的功能模块,所以修改它自然不会改变Swagger里的显示名啦~

内容的提问来源于stack exchange,提问作者SolarOsQuiere

火山引擎 最新活动