Next.js API路由中如何获取URL传递的req.query参数?
Next.js API 接口req.query为空的解决方案
你可以按照以下步骤排查修复:
- 首先确认当前API路由文件没有关闭Next.js默认的请求解析配置,如果你添加了如下配置请直接删除,默认配置下Next.js会自动解析URL查询参数挂载到
req.query对象上:
// 移除该段配置,除非你有自定义解析需求 export const config = { api: { bodyParser: false } }
关闭bodyParser不仅会禁用请求体解析,也会终止默认的查询参数解析逻辑。
- 如果你确实需要关闭
bodyParser(例如处理文件上传场景),可以手动从请求URL中解析参数,修改后的代码如下:
import { parse } from 'url'; const handler = nc().use(Cors()); handler.get(async (req, res) => { await db.connect(); // 手动解析查询参数 const { query } = parse(req.url || '', true); console.log(query); const page = parseInt(query.page?.toString() || '1', 10); const limit = parseInt(query.limit?.toString() || '30', 10); const products = await Product.paginate({}, { page, limit }); res.send(products); }); export default handler;
- 排查
next-connect版本兼容问题:如果你使用的是0.x旧版本的next-connect,升级到1.x最新稳定版即可解决部分场景下原生req属性丢失的问题。 - 检查
next.config.js中的重写/重定向规则,确认规则没有丢弃查询参数:如果配置了路径重写,不需要额外修改即可默认保留查询参数,如果使用了通配符路径匹配,确保规则不会截断参数传递。
内容的提问来源于stack exchange,提问作者illyria
相关产品推荐
相关产品推荐

