Bird
Raised Fist0
NextJSframework~10 mins

Response modification in NextJS - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to set a custom header in a Next.js API route response.

NextJS
export async function GET() {
  const response = new Response('Hello World');
  response.headers.set('[1]', 'application/json');
  return response;
}
Drag options to blanks, or click blank then click option'
AAuthorization
BAccept
CContent-Type
DCache-Control
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Accept' instead of 'Content-Type' will not set the response content type.
Setting 'Authorization' header is for requests, not responses.
2fill in blank
medium

Complete the code to modify the response status code in a Next.js API route.

NextJS
export async function GET() {
  return new Response('Not Found', { status: [1] });
}
Drag options to blanks, or click blank then click option'
A200
B404
C500
D301
Attempts:
3 left
💡 Hint
Common Mistakes
Using 200 means success, which doesn't match the 'Not Found' message.
Using 500 means server error, which is not appropriate here.
3fill in blank
hard

Fix the error in setting multiple headers in the Next.js response object.

NextJS
export async function GET() {
  const headers = new Headers();
  headers.append('X-Custom-Header', 'value1');
  headers.[1]('X-Another-Header', 'value2');
  return new Response('OK', { headers });
}
Drag options to blanks, or click blank then click option'
Aadd
Binsert
Cpush
Dset
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'add' or 'push' causes runtime errors because these methods don't exist on Headers.
Using 'append' again would add multiple values to the same header name.
4fill in blank
hard

Fill both blanks to create a JSON response with a custom status code and header.

NextJS
export async function GET() {
  const data = { message: 'Success' };
  return new Response(JSON.stringify(data), { status: [1], headers: { '[2]': 'application/json' } });
}
Drag options to blanks, or click blank then click option'
A200
B404
CContent-Type
DAuthorization
Attempts:
3 left
💡 Hint
Common Mistakes
Using 404 status with a success message is contradictory.
Using 'Authorization' header instead of 'Content-Type' is incorrect here.
5fill in blank
hard

Fill all three blanks to create a Next.js API response with a JSON body, custom header, and status code.

NextJS
export async function GET() {
  const result = { success: true };
  return new Response(JSON.stringify([1]), {
    status: [2],
    headers: { '[3]': 'application/json' }
  });
}
Drag options to blanks, or click blank then click option'
Aresult
B404
CContent-Type
D200
Attempts:
3 left
💡 Hint
Common Mistakes
Using 404 status with a success object is wrong.
Using wrong header names causes clients to misinterpret the data.

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

  1. Step 1: Understand response headers role

    Response headers tell the browser how to handle the data, like caching or security rules.
  2. Step 2: Identify what modifying headers affects

    Changing headers controls browser behavior, not client state or URLs.
  3. Final Answer:

    Control caching and security policies sent to the browser -> Option B
  4. 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

  1. Step 1: Recall Next.js API response methods

    Next.js uses Node.js response objects where setHeader is the standard method.
  2. Step 2: Compare options to Node.js response API

    Only setHeader is a valid method; others are incorrect or undefined.
  3. Final Answer:

    res.setHeader('X-Custom-Header', 'value') -> Option A
  4. 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?
export default function handler(req, res) {
  res.status(404).json({ error: 'Not found' });
}
medium
A. 500
B. 200
C. 404
D. 302

Solution

  1. Step 1: Identify the status method usage

    The code calls res.status(404) to set the HTTP status code to 404.
  2. Step 2: Understand the effect of res.status()

    This sets the response status code before sending JSON data.
  3. Final Answer:

    404 -> Option C
  4. Quick Check:

    res.status(404) sets status code 404 [OK]
Hint: res.status(code) sets HTTP status code [OK]
Common Mistakes:
  • Assuming default 200 status without checking code
  • Confusing 404 with 500 or redirect codes
  • Ignoring the status() method effect
4. Identify the error in this Next.js API route code that tries to modify the response:
export default function handler(req, res) {
  res.status(200);
  res.json({ message: 'Hello' });
  res.setHeader('X-Test', 'value');
}
medium
A. res.json() cannot be used with status()
B. res.status(200) is missing a return statement
C. res.setHeader() should be called after res.json()
D. Headers must be set before sending the response body

Solution

  1. Step 1: Review response order rules

    Headers must be set before sending the response body with res.json().
  2. Step 2: Identify incorrect header setting

    res.setHeader() is called after res.json(), which is too late to modify headers.
  3. Final Answer:

    Headers must be set before sending the response body -> Option D
  4. 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

  1. Step 1: Understand the condition for caching

    Caching headers should be added only if the user is authenticated (isAuth is true).
  2. 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.
  3. Final Answer:

    if (isAuth) { res.setHeader('Cache-Control', 'private, max-age=3600'); } -> Option A
  4. 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