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

如何在NestJS框架中获取HTTP请求头信息?

NestJS 获取请求头的实现方案

你可以通过以下两种常用方式实现请求头的读取,用法和Express原生逻辑完全兼容:

  • 方法1:使用@Req()装饰器获取完整请求对象
    该方式适合需要同时操作请求其他属性的场景,和你之前在Express中使用req.headers的习惯完全一致,示例代码如下:
import { Controller, Get, Header, Req } from "@nestjs/common";
import { Request } from "express";

@Controller("health")
export class HealthController {
  @Get()
  @Header("content-type", "application/json")
  @Header("Something", "Value") // 你需要返回的自定义响应头
  checkHealth(@Req() req: Request): unknown {
    // 和Express用法完全一致获取所有请求头
    const allHeaders = req.headers;
    // 获取单个指定请求头
    const specificHeader = req.headers['something'];

    return {
      test: "This is the test",
      receivedHeaders: allHeaders
    };
  }
}
  • 方法2:使用@Headers()装饰器直接读取请求头
    该方式是NestJS提供的声明式语法,更简洁,不需要引入完整的请求对象,既可以一次性读取所有请求头,也可以直接读取单个指定请求头,示例代码如下:
import { Controller, Get, Header, Headers } from "@nestjs/common";

@Controller("health")
export class HealthController {
  @Get()
  @Header("content-type", "application/json")
  @Header("Something", "Value")
  // 方式1:直接获取全部请求头对象
  checkHealth(@Headers() headers: Record<string, string | string[]>): unknown {
    const specificHeader = headers['something'];
    return {
      test: "This is the test",
      specificHeader
    };
  }

  // 方式2:直接获取指定名称的单个请求头
  @Get('test')
  test(@Headers('something') somethingHeader: string) {
    return {
      somethingHeader
    }
  }
}

注意:Node.js 会自动将传入的请求头名称转为小写格式存储,因此读取时使用小写的键名取值更稳妥,不会出现大小写不匹配导致取不到值的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:36:02