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

如何在Postman中传递NestJS的@Request()对象数据进行测试

如何在Postman中传递NestJS的@Request()对象数据进行测试

兄弟,其实你不用纠结怎么“直接传递”@Request对象里的userId——这个userId根本不是你手动传的,是后端通过你发送的Bearer Token自动解析挂载上去的!我给你捋清楚步骤:

首先回忆下你的业务逻辑:用户登录拿到Bearer Token,前端带着这个Token发请求,后端的认证守卫(比如JwtAuthGuard)会验证Token的合法性,解析出用户ID,然后把它挂载到request对象的userId属性上,所以你在控制器里用@Request()才能拿到req.userId。

那Postman里测试的话,只需要正确携带这个Bearer Token就行,步骤如下:

  • 先调用你的登录API,拿到返回的有效Token(你说登录接口已经能返回token和refresh token,这步你肯定搞定了)
  • 打开Postman,选中你要测试的接口,切换到Authorization标签页
  • 类型选择Bearer Token,然后在Token输入框里粘贴你刚才拿到的那个Token字符串
  • 直接发送请求就行!后端会自动完成Token验证,把userId挂载到req上,你在控制器里用@Request()就能正常拿到req.userId了

要是你想跳过认证环节,直接模拟登录用户(比如本地开发测试接口逻辑时),可以搞个临时方案:

  1. 在你的NestJS项目里加个测试用的拦截器或者修改现有守卫,允许从请求头的自定义字段(比如X-User-ID)读取用户ID
  2. 比如写个简单的拦截器:
import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
import { Observable } from 'rxjs';

@Injectable()
export class TestUserInterceptor implements NestInterceptor {
  intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
    const request = context.switchToHttp().getRequest();
    // 本地开发时,从请求头获取测试用的用户ID
    if (process.env.NODE_ENV === 'development') {
      const testUserId = request.headers['x-user-id'];
      if (testUserId) {
        request.userId = testUserId;
      }
    }
    return next.handle();
  }
}
  1. 在Postman的请求Headers里添加X-User-ID: 你的测试用户ID,这样后端就能把这个ID挂载到req.userId上,不用带Token也能测试了

注意哦,这个临时方案只适合本地开发用,上线前一定要关掉或者删掉,不然会有安全风险!

备注:内容来源于stack exchange,提问作者Shantanu Tomar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 10:43:02