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

Nest+TypeORM后端编译正常但未生成业务路由求助

解决Nest+TypeORM后端无业务路由显示的问题

针对你的情况,业务路由未在Swagger和日志中显示,可按以下步骤排查修复:

1. 给业务控制器添加Swagger装饰器

Swagger需要识别控制器和接口的装饰器才能生成文档,你的业务控制器(如DevsController、NiveisController)目前仅使用了Nest基础路由装饰器,缺少Swagger专属装饰器:

在控制器文件中导入Swagger装饰器,并添加到控制器和接口方法上:

import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common';
import { DevsService } from './devs.service';
import { CreateDevDto } from './dto/create-dev.dto';
import { UpdateDevDto } from './dto/update-dev.dto';
// 导入Swagger装饰器
import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger';

// 给控制器添加标签,对应Swagger的分组
@ApiTags('devs')
@Controller('devs')
export class DevsController {
  constructor(private readonly devsService: DevsService) {}

  // 接口描述
  @ApiOperation({ summary: '创建开发者' })
  // 响应状态说明
  @ApiResponse({ status: 201, description: '开发者创建成功' })
  @ApiResponse({ status: 400, description: '参数错误' })
  @Post()
  create(@Body() createDevDto: CreateDevDto) {
    return this.devsService.create(createDevDto);
  }

  @ApiOperation({ summary: '获取所有开发者' })
  @ApiResponse({ status: 200, description: '查询成功' })
  @Get()
  findAll() {
    return this.devsService.findAll();
  }

  @ApiOperation({ summary: '根据ID获取开发者' })
  @ApiResponse({ status: 200, description: '查询成功' })
  @ApiResponse({ status: 404, description: '开发者不存在' })
  @Get(':id')
  findOne(@Param('id') id: string) {
    return this.devsService.findOne(+id);
  }

  @ApiOperation({ summary: '更新开发者信息' })
  @ApiResponse({ status: 200, description: '更新成功' })
  @ApiResponse({ status: 404, description: '开发者不存在' })
  @Patch(':id')
  update(@Param('id') id: string, @Body() updateDevDto: UpdateDevDto) {
    return this.devsService.update(+id, updateDevDto);
  }

  @ApiOperation({ summary: '删除开发者' })
  @ApiResponse({ status: 200, description: '删除成功' })
  @ApiResponse({ status: 404, description: '开发者不存在' })
  @Delete(':id')
  remove(@Param('id') id: string) {
    return this.devsService.remove(+id);
  }
}

同样给NiveisController添加对应的Swagger装饰器。

2. 给DTO类添加Swagger属性装饰器

为了让Swagger显示接口参数的详细说明,给DTO类(如CreateDevDto)添加@ApiProperty装饰器:

import { ApiProperty } from '@nestjs/swagger';

export class CreateDevDto {
  @ApiProperty({ description: '开发者姓名' })
  nome: string;

  @ApiProperty({ description: '开发者年龄' })
  idade: number;

  @ApiProperty({ description: '开发者所属等级ID' })
  nivelId: number;
}

3. 开启路由日志(可选)

如果想在控制台启动时看到所有业务路由,修改main.ts中创建应用的配置,开启verbose日志:

const app = await NestFactory.create(AppModule, {
  logger: ['log', 'error', 'warn', 'debug', 'verbose'],
});

或者使用命令nest start --watch --verbose启动项目,控制台会打印所有注册的路由信息。

完成以上步骤后,重启项目,访问/api即可看到Swagger文档中的业务路由,同时控制台会显示路由映射日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:30:06