如何在Nuxt 3服务端API中获取路由参数与查询参数
你当前代码输出undefined的核心原因有两个:
- 原生
IncomingMessage请求对象本身没有内置id属性,直接访问自然返回空 - 你使用的是基于文件系统路由的服务端框架(如Nuxt3/Nitro),路由参数、查询参数都需要通过框架提供的专用方法获取,不能直接从原生请求对象读取。
方案1:使用路径参数形式(/api/track/TRACKID)
- 你的文件路径
PROJECT/server/api/track/[id].ts是正确的,该路径对应路由规则为/api/track/:id,可以正常匹配/api/track/任意TRACKID值的请求,你所说的“只能识别到带[id]的路径”属于测试操作错误,直接访问http://localhost:3000/api/track/123即可正常命中该接口文件。 - 正确的参数获取代码:
export default defineEventHandler(async (event) => { // 从动态路由中获取id参数 const trackId = getRouterParam(event, 'id') console.log(trackId) // 后续业务逻辑 })
方案2:使用查询参数形式(/api/track?id=TRACKID)
- 你的文件路径
PROJECT/server/api/track.ts是正确的,对应路由为/api/track,支持携带查询参数访问。 - 正确的参数获取代码:
export default defineEventHandler(async (event) => { // 从查询参数中获取id值 const { id: trackId } = getQuery(event) console.log(trackId) // 后续业务逻辑 })
内容的提问来源于stack exchange,提问作者radmacher
相关产品推荐
相关产品推荐

