Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Modify HTTP Response Headers in Next.js API Route
📖 Scenario: You are building a Next.js API route that returns a JSON response. You want to add a custom HTTP header to the response to provide extra information to the client.
🎯 Goal: Create a Next.js API route that sends a JSON response with a custom HTTP header X-Custom-Header set to MyValue.
📋 What You'll Learn
Create a Next.js API route handler function named GET.
Set a custom header X-Custom-Header with the value MyValue on the response.
Return a JSON response with a message { message: 'Hello, Next.js!' }.
💡 Why This Matters
🌍 Real World
Adding custom headers is useful for sending extra information like security policies, caching instructions, or metadata to clients in web applications.
💼 Career
Understanding how to modify HTTP responses is important for backend and full-stack developers working with Next.js or other server frameworks to control client-server communication.
Progress0 / 4 steps
1
Create the API route handler function
Create an async function called GET that takes a single parameter request.
NextJS
Hint
This function will handle GET requests to your API route.
2
Create the JSON response body
Inside the GET function, create a constant called jsonData and set it to the object { message: 'Hello, Next.js!' }.
NextJS
Hint
This object will be sent as the JSON response body.
3
Create the Response object with custom header
Still inside the GET function, create a constant called response and set it to a new Response object. Pass JSON.stringify(jsonData) as the body, and an object with headers containing 'Content-Type': 'application/json' and 'X-Custom-Header': 'MyValue'.
NextJS
Hint
The Response constructor lets you set headers along with the body.
4
Return the Response object
At the end of the GET function, return the response object.
NextJS
Hint
Returning the Response sends it back to the client.
Practice
(1/5)
1. In Next.js, what does modifying the response headers allow you to do?
easy
A. Change the React component state on the client
B. Control caching and security policies sent to the browser
C. Modify the URL path of the current page
D. Update the database directly from the response
Solution
Step 1: Understand response headers role
Response headers tell the browser how to handle the data, like caching or security rules.
Step 2: Identify what modifying headers affects
Changing headers controls browser behavior, not client state or URLs.
Final Answer:
Control caching and security policies sent to the browser -> Option B
Quick Check:
Headers control browser policies = A [OK]
Hint: Headers control browser rules like caching and security [OK]
Common Mistakes:
Thinking headers change client-side state
Confusing headers with URL routing
Assuming headers update databases
2. Which of the following is the correct way to set a custom header in a Next.js API route response?
easy
A. res.setHeader('X-Custom-Header', 'value')
B. res.headers['X-Custom-Header'] = 'value'
C. res.header('X-Custom-Header', 'value')
D. res.addHeader('X-Custom-Header', 'value')
Solution
Step 1: Recall Next.js API response methods
Next.js uses Node.js response objects where setHeader is the standard method.
Step 2: Compare options to Node.js response API
Only setHeader is a valid method; others are incorrect or undefined.
Final Answer:
res.setHeader('X-Custom-Header', 'value') -> Option A
Quick Check:
Use setHeader to set headers = D [OK]
Hint: Use res.setHeader() to set headers in Next.js API [OK]
Common Mistakes:
Using res.headers as an object directly
Calling non-existent methods like header() or addHeader()
Confusing client-side and server-side APIs
3. What will be the HTTP status code of this Next.js API response?
C. res.setHeader() should be called after res.json()
D. Headers must be set before sending the response body
Solution
Step 1: Review response order rules
Headers must be set before sending the response body with res.json().
Step 2: Identify incorrect header setting
res.setHeader() is called after res.json(), which is too late to modify headers.
Final Answer:
Headers must be set before sending the response body -> Option D
Quick Check:
Set headers before body = C [OK]
Hint: Set headers before sending response body [OK]
Common Mistakes:
Setting headers after res.json()
Thinking res.status() sends response immediately
Ignoring response flow order
5. You want to add caching headers to a Next.js API response only if the user is authenticated. Which code snippet correctly modifies the response based on this condition?
export default function handler(req, res) {
const isAuth = req.headers.authorization === 'secret-token';
// Add caching headers only if authenticated
???
res.status(200).json({ data: 'Secure data' });
}
hard
A. if (isAuth) { res.setHeader('Cache-Control', 'private, max-age=3600'); }
B. if (!isAuth) { res.setHeader('Cache-Control', 'private, max-age=3600'); }
C. res.setHeader('Cache-Control', 'public, max-age=3600');
D. res.status(401).json({ error: 'Unauthorized' });
Solution
Step 1: Understand the condition for caching
Caching headers should be added only if the user is authenticated (isAuth is true).
Step 2: Choose the correct conditional header setting
if (isAuth) { res.setHeader('Cache-Control', 'private, max-age=3600'); } sets caching headers only when isAuth is true, matching the requirement.
Final Answer:
if (isAuth) { res.setHeader('Cache-Control', 'private, max-age=3600'); } -> Option A
Quick Check:
Set cache header only if authenticated = B [OK]
Hint: Use if (isAuth) to conditionally set headers [OK]
Common Mistakes:
Setting cache headers when not authenticated
Using public cache instead of private
Returning 401 without setting headers when required