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 main purpose of API routes in Next.js?
API routes in Next.js handle backend logic like processing data, accessing databases, and managing authentication. They act as a bridge between the frontend and backend.
Click to reveal answer
beginner
How do API routes help keep frontend and backend code separate?
API routes run on the server side, so they keep sensitive logic and data away from the browser, making the app more secure and organized.
Frontend code runs in the browser and can't securely access databases or perform sensitive operations. API routes run on the server where these tasks are safe.
Click to reveal answer
beginner
What happens when a frontend component calls an API route in Next.js?
The frontend sends a request to the API route URL. The API route runs backend code, processes the request, and sends back data or results to the frontend.
Click to reveal answer
intermediate
Can API routes in Next.js be used for authentication? Why?
Yes, API routes can securely handle authentication because they run on the server, allowing safe verification of user credentials and management of sessions.
Click to reveal answer
What role do API routes play in Next.js?
AThey style the frontend components.
BThey handle only client-side routing.
CThey run backend logic like database access and data processing.
DThey replace React components.
✗ Incorrect
API routes run backend code to handle tasks like database access and data processing, which frontend code cannot do securely.
Why should sensitive logic be placed in API routes instead of frontend code?
ABecause API routes run on the server and keep data secure.
BBecause frontend code is faster.
CBecause API routes are easier to style.
DBecause frontend code cannot make HTTP requests.
✗ Incorrect
API routes run on the server, protecting sensitive logic and data from exposure in the browser.
How does the frontend communicate with backend logic in Next.js?
ABy using CSS selectors.
BBy calling API routes via HTTP requests.
CBy importing backend files directly.
DBy running backend code in the browser.
✗ Incorrect
Frontend sends HTTP requests to API routes, which run backend logic and return responses.
Which of these is NOT a typical use of API routes in Next.js?
ARendering React components.
BAccessing a database.
CHandling user authentication.
DProcessing form data.
✗ Incorrect
Rendering React components is done on the frontend, not in API routes.
Where do API routes run in a Next.js application?
AIn the database.
BIn the browser.
CInside CSS files.
DOn the server side.
✗ Incorrect
API routes run on the server, enabling secure backend operations.
Explain why Next.js uses API routes to handle backend logic instead of putting that logic in frontend components.
Think about where code runs and what it can safely do.
You got /5 concepts.
Describe the process of how a frontend component interacts with backend logic using API routes in Next.js.
Focus on the communication steps between frontend and backend.
You got /5 concepts.
Practice
(1/5)
1. Why do Next.js API routes serve backend logic in a Next.js project?
easy
A. They are used only to style the frontend components.
B. They replace the need for React components in the app.
C. They allow running server-side code like data fetching and secure operations within the same project.
D. They automatically generate static HTML pages.
Solution
Step 1: Understand the role of API routes
API routes in Next.js let you write backend code inside your project to handle tasks like fetching data or processing forms.
Step 2: Identify what backend logic means
Backend logic means code that runs on the server, such as secure operations or database access, which API routes enable.
Final Answer:
They allow running server-side code like data fetching and secure operations within the same project. -> Option C
Quick Check:
API routes = backend logic handler [OK]
Hint: API routes run server code inside Next.js projects [OK]
Common Mistakes:
Thinking API routes style frontend
Confusing API routes with React components
Believing API routes generate static pages
2. Which of the following is the correct way to define a Next.js API route handler?
easy
A. const handler = () =>
Hello
B. function handler() { return
Hello
}
C. export function handler() { console.log('Hello') }
D. export default function handler(req, res) { res.status(200).json({ message: 'Hello' }) }
Solution
Step 1: Recognize API route syntax
Next.js API routes export a default function that receives req and res to handle requests and responses.
Step 2: Check each option
export default function handler(req, res) { res.status(200).json({ message: 'Hello' }) } correctly exports a default function with req and res and sends a JSON response. Others either lack export default or return JSX, which is incorrect for API routes.
Final Answer:
export default function handler(req, res) { res.status(200).json({ message: 'Hello' }) } -> Option D
Quick Check:
API route = export default function(req, res) [OK]
Hint: API routes export default function with req, res [OK]
Common Mistakes:
Returning JSX instead of JSON
Not exporting default function
Missing req and res parameters
3. Given this Next.js API route code, what will be the JSON response when a GET request is made?
export default function handler(req, res) {
if (req.method === 'GET') {
res.status(200).json({ success: true, data: 'Hello World' })
} else {
res.status(405).json({ error: 'Method Not Allowed' })
}
}
medium
A. {"error":"Method Not Allowed"}
B. {"success":true,"data":"Hello World"}
C. An HTML page with 'Hello World'
D. A runtime error occurs
Solution
Step 1: Check request method handling
The handler checks if the request method is 'GET'. If yes, it sends a 200 status with JSON containing success and data.
Step 2: Determine response for GET request
Since the request is GET, the response will be JSON: {"success":true,"data":"Hello World"} with status 200.
Final Answer:
{"success":true,"data":"Hello World"} -> Option B
Quick Check:
GET request returns success JSON [OK]
Hint: GET method returns success JSON, others error [OK]
Common Mistakes:
Assuming all methods return success
Expecting HTML instead of JSON
Confusing status codes
4. Identify the error in this Next.js API route code:
export default function handler(req, res) {
if (req.method === 'POST') {
res.json({ message: 'Data received' })
} else {
res.status(405).json({ error: 'Method Not Allowed' })
}
}
medium
A. No error, code is correct
B. Using res.json instead of res.send
C. Missing status code in the POST response
D. Missing req parameter
Solution
Step 1: Review response methods
In Next.js API routes, res.json() sends a JSON response with a default status code of 200, which is correct and functional.
Step 2: Check each option
The code properly handles POST with res.json() (200 OK implied) and other methods with 405 error. There are no syntax errors, runtime issues, or missing parameters. res.json is the right method for JSON responses.
Final Answer:
No error, code is correct -> Option A
Quick Check:
res.json defaults to 200, code runs correctly [OK]
Hint: res.json() defaults to status 200 [OK]
Common Mistakes:
Thinking missing explicit status code is an error
Confusing res.json and res.send
Forgetting req or res parameters
5. You want to create a Next.js API route that securely processes a form submission only if the request method is POST and the request body contains a non-empty 'email' field. Which code snippet correctly implements this logic?
hard
A. export default function handler(req, res) {
if (req.method === 'POST' && req.body.email) {
res.status(200).json({ message: `Email ${req.body.email} received` })
} else {
res.status(400).json({ error: 'Invalid request' })
}
}
B. export default function handler(req, res) {
if (req.method === 'GET' || !req.body.email) {
res.status(200).json({ message: 'Form processed' })
} else {
res.status(400).json({ error: 'Invalid request' })
}
}
C. export default function handler(req, res) {
if (req.method === 'POST') {
res.status(200).json({ message: 'Form processed' })
} else {
res.status(400).json({ error: 'Invalid request' })
}
}
D. export default function handler(req, res) {
res.status(200).json({ message: 'Form processed' })
}
Solution
Step 1: Check method and body content
The handler must verify the request method is POST and that the 'email' field exists and is not empty in the request body.
Step 2: Validate each option
export default function handler(req, res) {
if (req.method === 'POST' && req.body.email) {
res.status(200).json({ message: `Email ${req.body.email} received` })
} else {
res.status(400).json({ error: 'Invalid request' })
}
} correctly checks both conditions and returns a success message with the email. Others either check wrong methods, ignore the email field, or always respond without validation.