NestJS如何修改OpenAPI(Swagger)文档Schema中显示的DTO名称
NestJS Swagger 自定义DTO文档展示名称方案
该需求可直接通过NestJS Swagger原生装饰器实现,无需修改DTO原有类名,不会和项目内已存在的同名类产生冲突。
实现方式
使用@nestjs/swagger包提供的@ApiSchema类装饰器,通过name参数直接指定该DTO在OpenAPI文档中展示的Schema名称即可:
import { ApiSchema, ApiProperty } from '@nestjs/swagger'; // 类名保持UserDto不变,项目内原有引用逻辑不需要任何修改 @ApiSchema({ name: 'User' }) export class UserDto { @ApiProperty({ description: '用户ID' }) id: number; @ApiProperty({ description: '用户名' }) username: string; // 其余DTO属性定义 }
效果说明
配置完成后重启服务,以下位置的命名都会统一替换为你指定的User:
- Swagger文档Schemas板块的模型名称
- 所有接口请求体、响应体中引用该DTO的类型展示
- OpenAPI导出的json/yaml规范文件中对应的模型定义
注意事项
- OpenAPI规范要求Schema名称全局唯一,请确保你配置的展示名称没有被其他DTO/模型的
@ApiSchema配置占用 - 该装饰器仅修改文档层面的展示名称,完全不影响项目运行时代码的逻辑,不会和你项目中已存在的
User类产生命名冲突
内容的提问来源于stack exchange,提问作者Extremely
相关产品推荐
相关产品推荐

