
Next.js 13 App Router 中的 API 路由不再支持 req.query,必须使用 request.nextUrl.searchParams 解析 URL 查询参数,否则会因 req.query is undefined 报错。
next.js 13 api 路由中正确获取查询参数的方法:next.js 13 app router 中的 api 路由不再支持 `req.query`,必须使用 `request.nexturl.searchparams` 解析 url 查询参数,否则会因 `req.query is undefined` 报错。
在 Next.js 13 的 App Router 中,API 路由(位于 app/api/.../route.ts/js)已彻底重构为基于 Web Request/Response 标准的函数式路由处理器,不再兼容 Pages Router 风格的 (req, res) => {} 处理器签名。你当前代码中使用的 req.query 是 Pages Router 的遗留写法,在 App Router 下 req 对象根本不存在 query 属性——正如控制台日志所示,查询参数实际封装在 request.nextUrl.searchParams(一个标准 URLSearchParams 实例)中。
✅ 正确做法:使用命名导出的 HTTP 方法处理器(如 GET、POST),并通过 request.nextUrl.searchParams 获取参数:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
// app/api/events/route.ts
import { NextRequest, NextResponse } from 'next/server';
import Event from '@models/Event';
import { connectToMongoDB } from '@utils/database/connectToMongoDB';
export async function GET(request: NextRequest) {
// ✅ 正确获取查询参数
const searchParams = request.nextUrl.searchParams;
const filterBy = searchParams.get('filterBy'); // string | null
const status = searchParams.get('status'); // string | null
// 安全解构(避免 null/undefined 报错)
const filters = Object.fromEntries(
Array.from(searchParams.entries()).filter(([key]) => key !== 'filterBy')
);
try {
await connectToMongoDB();
const events = await Event.find(filterBy && status ? { [filterBy]: status } : {});
return NextResponse.json({ data: events }, { status: 200 });
} catch (error) {
return NextResponse.json({ error: 'Failed to fetch events' }, { status: 500 });
}
}
⚠️ 注意事项:
- 禁止使用默认导出或 (req, res) 签名:App Router 要求显式导出 GET、POST 等方法,否则路由无法注册;
- searchParams.get() 返回 string | null:务必做空值判断,或使用可选链/空值合并(如 filterBy ?? 'all');
- 批量提取所有参数:若需完整 query 对象,可用 Object.fromEntries(searchParams.entries()),但注意它会包含 filterBy,需手动过滤;
- 客户端调用保持不变:fetch('/api/events?filterBy=status&status=Live') 完全兼容,无需修改。
? 小贴士:若需类型安全,可配合 Zod 或自定义类型守卫校验参数格式;对于复杂过滤逻辑,建议将参数解析与业务逻辑分离,提升可测试性与可维护性。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










