How to set or send a static response header for a GET request in Nestjs?

July 10, 2022 - 3 min read

To set or send a static header for a GET request in Nestjs, we can use the @Header() decorator function from the @nestjs/common module before the Controller class method that handles that GET request.

TL;DR

// import `@Header()` decorator function from the `@nestjs/common` module
import { Controller, Get, Header } from "@nestjs/common";

// the @Controller() decorator function will instruct Nestjs
// to add a route of `/greet`
@Controller("greet")
export class GreetController {
  // 1. the @Get() decorator function will instruct Nestjs
  // that this is the default method that should be
  // invoked when the user requests a `GET` to `/greet` endpoint
  // 2. use the @Header() decorator function and
  // pass the header name as the first argument
  // and the header value as the second argument
  @Get()
  @Header("x-app-name", "MyApp")
  sayHello() {
    return `Hello World`;
  }
}

For example, let's say we have an API endpoint called /greet, and requesting it will give us a response of Hello World.

It can be done like this,

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

// the @Controller() decorator function will instruct Nestjs
// to add a route of `/greet`
@Controller("greet")
export class GreetController {
  // the @Get() decorator function will instruct Nestjs
  // that this is the default method that should be
  // invoked when the user requests a `GET` to `/greet` endpoint
  @Get()
  sayHello() {
    return `Hello World`;
  }
}

To know more about creating a GET request in Nestjs, see the blog on How to make a simple GET request or an API endpoint in Nestjs?.

Now if we need to send a custom header called x-app-name with the value of My App, we can use the @Header() decorator function and use just above the sayHello() method.

The @Header() decorator function accepts 2 arguments:

  • the first argument should be the header name
  • and the second argument should be the header value

In our case it will look like this,

// import `@Header()` decorator function from the `@nestjs/common` module
import { Controller, Get, Header } from "@nestjs/common";

// the @Controller() decorator function will instruct Nestjs
// to add a route of `/greet`
@Controller("greet")
export class GreetController {
  // 1. the @Get() decorator function will instruct Nestjs
  // that this is the default method that should be
  // invoked when the user requests a `GET` to `/greet` endpoint
  // 2. use the @Header() decorator function and
  // pass the header name as the first argument
  // and the header value as the second argument
  @Get()
  @Header("x-app-name", "MyApp")
  sayHello() {
    return `Hello World`;
  }
}

Now if we send a GET request to the /greet API endpoint, we will get a response of Hello World along with the header of x-app-name having the value of MyApp.

We have successfully set a static response header for a GET request in Nestjs. Yay 🥳!

See the above code live in codesandbox.

To see the header in the response, go to this Hoppscotch link and make a request.

That's all 😃!

Feel free to share if you found this helpful 😃.