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

NestJS接口中无法正确打印路由参数studentId该如何解决?

问题原因

你遇到的问题分两种常见场景,对应原因如下:

  • 场景1:console.log(studentId)无输出/输出undefined
    1. 路由路径不匹配:如果控制器类上有@Controller()指定的统一前缀,需要把前缀加入访问路径,比如前缀为students时要访问/students/123才能命中该接口,路径错误时接口不会触发,自然不会打印参数
    2. @Param装饰器导入错误:需要确认装饰器是从@nestjs/common包导入,导入错包会导致参数解析失效
    3. 路由匹配冲突:如果同控制器下静态路由(如@Get('/list'))定义在动态参数路由之后,访问静态路径时会优先命中动态参数路由,此时拿到的参数值不符合预期,需调整路由定义顺序
  • 场景2:console.log打印正常,但返回的字符串没有替换${studentId}为实际值
    你使用普通双引号包裹了模板插值语法,JS/TS中只有反引号()包裹的字符串才支持${变量}插值,双引号内的${}`会被当成普通文本输出。
修复方案

修复后的完整代码如下:

import { Controller, Get, Param } from '@nestjs/common';

// 根据你的业务调整统一前缀,没有可删除
@Controller('students')
export class StudentController {
  @Get('/:studentId')
  getStudentById(
    @Param('studentId') studentId: string
  ){
    console.log(studentId);
    // 双引号替换为反引号实现模板插值
    return `Get Student By Id: ${studentId}.`;
  }
}

操作检查项:

  • 确认@Param从@nestjs/common导入
  • 调整路由定义顺序,把所有静态路由放到动态参数路由前
  • 访问路径和路由规则保持一致
  • 返回值的字符串包裹符号从双引号改为反引号

内容的提问来源于stack exchange,提问作者Rajib Hossain Pavel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 08:00:00