Complete the code to define a catch-all API route filename in Next.js.
export default function handler(req, res) {
res.status(200).json({ message: 'Hello from [1] route' });
}
// Filename: pages/api/[1].jsThe catch-all API route filename uses square brackets with three dots: [...slug]. This captures all paths under that route.
Complete the code to access the catch-all route parameters inside the API handler.
export default function handler(req, res) {
const { [1] } = req.query;
res.status(200).json({ params: [1] });
}req.query.params or req.query.path which do not match the filename.req.query.query which is not correct.The catch-all route parameters are available in req.query.slug if the filename is [...slug].js.
Fix the error in the catch-all API route handler to correctly handle no parameters.
export default function handler(req, res) {
const { slug = [] } = req.query;
if ([1]) {
res.status(200).json({ message: 'No parameters provided' });
} else {
res.status(200).json({ params: slug });
}
}When no parameters are passed, slug is an empty array. Checking slug.length === 0 detects this case.
Fill both blanks to create an optional catch-all API route filename and access its parameters.
// Filename: pages/api/[1].js export default function handler(req, res) { const { [2] = [] } = req.query; res.status(200).json({ params: [2] }); }
An optional catch-all route uses double square brackets with three dots: [[...slug]]. The parameter name is slug.
Fill all three blanks to return a JSON response with the first parameter, all parameters, and a message.
export default function handler(req, res) {
const { [1] = [] } = req.query;
const firstParam = [2][0] || null;
res.status(200).json({
first: firstParam,
all: [3],
message: firstParam ? `First param is ${firstParam}` : 'No params'
});
}The parameter name from the catch-all route is slug. It is used to get the first parameter and all parameters.