You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决NSwag为不同控制器同名Action生成带数字后缀方法的问题

解决NSwag生成同名API方法后缀重复的问题

方案1:为每个Action指定唯一的OperationId

在ASP.NET Core控制器的Action上添加[OperationId]特性,明确指定唯一操作ID,确保不同控制器下的同名方法拥有独立标识:

// Adam控制器
[ApiController]
[Route("api/[controller]")]
[Tags("Adam")]
public class AdamController : ControllerBase
{
    [HttpGet("GetData")]
    [OperationId("Adam_GetData")]
    public IActionResult GetData()
    {
        // 业务逻辑实现
    }
}

// Badam控制器
[ApiController]
[Route("api/[controller]")]
[Tags("Badam")]
public class BadamController : ControllerBase
{
    [HttpGet("GetData")]
    [OperationId("Badam_GetData")]
    public IActionResult GetData()
    {
        // 业务逻辑实现
    }
}

保持operationGenerationMode为MultipleClientsFromFirstTagAndOperationId,NSwag会根据标签(控制器名)生成AdamHttpService和BadamHttpService,每个服务内的方法名使用指定的OperationId,不会自动添加数字后缀。

方案2:切换到路径分段生成客户端的模式

将operationGenerationMode设置为MultipleClientsFromPathSegments,NSwag会根据API路径分段(如/api/Adam/GetData中的Adam)自动划分客户端,无需额外配置OperationId:

// nswag.json配置示例
"operationGenerationMode": "MultipleClientsFromPathSegments",
"clients": [
    {
        "name": "AdamHttpService",
        "tag": "Adam"
    },
    {
        "name": "BadamHttpService",
        "tag": "Badam"
    }
]

这种模式下,不同控制器的同名方法会被归类到各自的客户端中,方法名保持GetData不变,不会出现后缀重复问题。

方案3:自定义方法名生成规则

在NSwag配置中指定包含控制器前缀的方法名生成器,从根源避免方法名冲突:

// nswag.json配置
"methodNameGenerator": "ControllerNameOperationNameGenerator",
"operationGenerationMode": "MultipleClientsFromFirstTagAndOperationId"

该生成器会自动将控制器名作为方法名前缀,生成AdamGetData和BadamGetData这类方法名,同时按标签生成独立客户端,兼顾方法名唯一性和客户端拆分需求。

内容的提问来源于stack exchange,提问作者Ramil Aliyev 007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 19:32:43