法语项目中NSwag生成C#客户端控制器名称冗余问题求助
解决方案
优先通过NSwag生成器配置实现
无需修改Swagger文档,直接在NSwag的配置中添加自定义控制器名称转换规则即可,既能保留后端法语命名规范,又能生成符合预期的客户端类名。
具体配置方法
在你的nswag.json文件的openApiToCSharpClient节点中,添加controllerNameGenerator配置,用字符串替换移除"Controleur"后缀:
"openApiToCSharpClient": { // 保留原有其他配置 "className": "{controller}HttpService", "controllerNameGenerator": "return controllerName.Replace(\"Controleur\", string.Empty);" }
配置说明
controllerNameGenerator支持嵌入C#代码片段,用于动态调整控制器名称,这里的逻辑会直接去掉控制器名称末尾的"Controleur"后缀。- 这种方式不会影响Swagger文档的输出,API路由和文档保持原有正确性,同时满足客户端类名的需求。
不建议修改Swagger文档的原因
修改Swagger文档需要额外改动控制器元数据(比如手动指定Swagger显示的控制器名称),会增加代码维护成本,且不符合单一职责原则:Swagger文档应准确反映后端实际结构,客户端类名的调整属于生成环节的需求,应在NSwag配置中处理。
内容的提问来源于stack exchange,提问作者Denis RUNGET
相关产品推荐
相关产品推荐

