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
Recall & Review
beginner
What is the purpose of the GET method handler in Next.js API routes?
The GET method handler responds to client requests to retrieve data. It usually sends back information without changing anything on the server.
Click to reveal answer
beginner
How does the POST method handler differ from GET in Next.js API routes?
The POST method handler receives data from the client to create or update resources on the server. It changes server state, unlike GET which only fetches data.
Click to reveal answer
intermediate
Show a simple example of a Next.js API route handling GET and POST methods.
export async function GET(request) {
return new Response('Hello from GET!');
}
export async function POST(request) {
const data = await request.json();
return new Response(`Received: ${JSON.stringify(data)}`);
}
Click to reveal answer
intermediate
Why should you define separate handlers for different HTTP methods in Next.js API routes?
Defining separate handlers for different HTTP methods ensures your API responds correctly to different types of requests, like GET for fetching data and POST for sending data. It helps avoid errors and improves security.
Click to reveal answer
beginner
What happens if you send a POST request to a Next.js API route that only has a GET handler?
The server will respond with a 405 Method Not Allowed error because the POST method is not handled in that route.
Click to reveal answer
Which HTTP method is typically used to retrieve data without changing the server state?
APOST
BPUT
CGET
DDELETE
✗ Incorrect
GET requests fetch data without modifying anything on the server.
In Next.js API routes, how do you access the data sent in a POST request?
Arequest.json()
Brequest.body
Crequest.params
Drequest.query
✗ Incorrect
You use await request.json() to parse the JSON data sent in the POST request body.
What status code does the server return if an unsupported HTTP method is used?
A404 Not Found
B405 Method Not Allowed
C200 OK
D500 Internal Server Error
✗ Incorrect
405 Method Not Allowed means the HTTP method is not supported by the API route.
Which Next.js function handles GET requests in an API route?
Aexport async function REQUEST()
Bexport async function POST()
Cexport async function FETCH()
Dexport async function GET()
✗ Incorrect
GET requests are handled by the exported async function named GET.
Why is it important to handle different HTTP methods separately in Next.js API routes?
ATo correctly respond to client actions like fetching or sending data
BTo reduce server memory usage
CTo improve page load speed
DTo avoid using JavaScript
✗ Incorrect
Handling methods separately ensures the API responds properly to different client requests.
Explain how GET and POST method handlers work in Next.js API routes and when to use each.
Think about when you want to get information versus when you want to send information.
You got /4 concepts.
Describe what happens if a client sends a POST request to a Next.js API route that only has a GET handler.
Consider how the server reacts to unsupported methods.
You got /4 concepts.
Practice
(1/5)
1. In Next.js API routes, how do you define a handler for a GET request?
easy
A. Define a function named handleGetRequest and call it manually.
B. Export an async function named GET from the route file.
C. Use app.get() inside the route file.
D. Export a function named getHandler from the route file.
Solution
Step 1: Understand Next.js route handler naming
Next.js expects exported async functions named after HTTP methods like GET or POST to handle those requests.
Step 2: Identify the correct naming convention
Only exporting an async function named GET will handle GET requests automatically.
Final Answer:
Export an async function named GET from the route file. -> Option B
Quick Check:
GET handler = async function named GET [OK]
Hint: Name the function exactly GET to handle GET requests [OK]
Common Mistakes:
Using incorrect function names like getHandler
Trying to call handlers manually
Using Express.js style app.get() in Next.js route files
2. Which of the following is the correct syntax to define a POST handler in a Next.js route file?
easy
A. export async function POST(request) { /* code */ }
B. export async function post(request) { /* code */ }
C. export function POST(request) { /* code */ }
D. export async function handlePOST(request) { /* code */ }
Solution
Step 1: Check function naming and case sensitivity
Next.js requires the handler function to be named exactly POST in uppercase to handle POST requests.
Step 2: Confirm async keyword usage
Handler functions should be async to handle asynchronous operations like reading request body.
Final Answer:
export async function POST(request) { /* code */ } -> Option A
Quick Check:
POST handler = async function named POST [OK]
Hint: Use uppercase POST and async keyword for POST handlers [OK]
Common Mistakes:
Using lowercase 'post' instead of uppercase 'POST'
Omitting async keyword
Wrong function names like handlePOST
3. Given this Next.js route handler code, what will be the response to a POST request?
export async function POST(request) {
const data = await request.json();
return new Response(JSON.stringify({ message: `Hello, ${data.name}!` }), { status: 200 });
}
And the client sends JSON {"name": "Alice"} in the POST body.
medium
A. SyntaxError due to missing await
B. Empty response with status 200
C. {"message":"Hello, Alice!"}
D. Error: request.json() is not a function
Solution
Step 1: Understand request.json() usage
The code uses await request.json() to parse the JSON body sent by the client, which contains {"name": "Alice"}.
Step 2: Construct response with personalized message
The response JSON string includes the message "Hello, Alice!" using the parsed data.name.
Final Answer:
{"message":"Hello, Alice!"} -> Option C
Quick Check:
POST JSON parsed and response includes name [OK]
Hint: Use await request.json() to read POST JSON body [OK]
Common Mistakes:
Forgetting to await request.json()
Returning empty or wrong response
Misnaming the data property
4. Identify the error in this Next.js route file code for handling GET and POST requests:
export async function GET() {
return new Response('Hello GET');
}
export function POST(request) {
const data = request.json();
return new Response(`Hello ${data.name}`);
}
medium
A. POST handler should be named post in lowercase
B. GET handler should not return Response directly
C. GET handler must accept a request parameter
D. POST handler is missing async keyword and await for request.json()
Solution
Step 1: Check POST handler async usage
The POST handler calls request.json() which returns a promise, so it must be awaited and the function must be async.
Step 2: Confirm GET handler and naming
The GET handler is correctly async and returns a Response; naming and parameters are correct.
Final Answer:
POST handler is missing async keyword and await for request.json() -> Option D
Quick Check:
Async + await needed for request.json() in POST [OK]
Hint: Always use async and await when calling request.json() [OK]
Common Mistakes:
Not marking POST handler async
Not awaiting request.json()
Incorrect handler function names
5. You want to create a Next.js route that responds to both GET and POST requests. The GET returns a JSON list of items, and the POST adds a new item sent in JSON body. Which is the best way to structure your route file?
hard
A. Export async functions named GET and POST; GET returns JSON list; POST reads JSON body and returns updated list.
B. Export a single function handling both GET and POST by checking request.method manually.
C. Use middleware to separate GET and POST logic in different files.
D. Define GET and POST as methods inside a class and export the class.
Solution
Step 1: Understand Next.js route handler pattern
Next.js expects separate exported async functions named after HTTP methods like GET and POST to handle those requests cleanly.
Step 2: Structure handlers for each method
Define GET to return the JSON list and POST to read the JSON body and return the updated list, each in their own async function.
Final Answer:
Export async functions named GET and POST; GET returns JSON list; POST reads JSON body and returns updated list. -> Option A
Quick Check:
Separate GET and POST async functions = clean Next.js pattern [OK]
Hint: Use separate async GET and POST functions for clarity [OK]