Skip to Content
ControllerHeaders

Headers

Request Headers

Request headers can be retrieved using the built‑in Next.js headers function.

import { headers } from 'next/headers'; const reqHeaders = headers(); const userAgent = reqHeaders.get('user-agent');

Alternatively, use req.headers from the Web Request API .

import { prefix, get } from 'vovk'; import { withZod } from 'vovk-zod'; @prefix('users') export default class UserController { @get('info') static async getUserInfo = withZod({ async handle(req) { const headers = req.headers; const userAgent = headers.get('user-agent'); // ... }, }); }

Cookies

To work with cookies, use the cookies  function exported by the Next.js headers module.

import { cookies } from 'next/headers'; export default class UserController { @put('do-something') static async doSomething() { const cookieStore = await cookies(); const theme = cookieStore.get('theme'); // ... } }

Response Headers

All HTTP decorators support custom response headers via the second argument.

// ... export default class UserController { @put('do-something', { headers: { 'x-hello': 'world' } }) static async doSomething(/* ... */) { /* ... */ } }

Enable CORS headers with the cors: true option.

// ... export default class UserController { @put('do-something', { cors: true }) static async doSomething(/* ... */) { /* ... */ } }

For auto‑generated endpoints, cors and headers are specified as the single argument.

// ... export default class UserController { @put.auto({ cors: true, headers: { 'x-hello': 'world' } }) static async doSomething(/* ... */) { /* ... */ } }

Dynamic Response Headers

Set dynamic response headers with the NextResponse object from Next.js.

import { NextResponse } from 'next/server'; // ... export default class UserController { @put('do-something') static async doSomething() { return NextResponse.json({ hello: 'world' }, { headers: { 'x-hello': 'world' } }); } }
Last updated on