如何从Nuxt 3服务器获取路由参数

3

我有以下API URL之一。对于我的用例来说,最终使用哪个URL并不重要,但目前两者都无法工作。

http://localhost:3000/api/track/TRACKID

或者

http://localhost:3000/api/track?id=TRACKID

我该如何在API代码中获得TRACKID?以下代码的结果为undefined
export default async (req: IncomingMessage, res: ServerResponse) => {
    console.log(req.id);
};


我试图按照以下方式设置第一个URL的文件,但是也没有成功。结果只是URL变成了http://localhost:3000/api/track/[id]
PROJECT/server/api/track/[id].ts

对于第二个URL,我使用了以下设置。

PROJECT/server/api/track.ts

1
你应该尝试使用Express自定义端点:https://nuxtjs.org/docs/configuration-glossary/configuration-servermiddleware#custom-api-endpoint - flakerimi
1
请查看此链接:https://dev.to/dabit3/creating-api-routes-in-a-nuxt-app-1kg1 - flakerimi
这能和Nuxt 3一起使用吗?你链接的东西似乎专注于Nuxt 2。 - radmacher
1
尝试一下,它会发挥作用。 - flakerimi
3个回答

9

编辑:现在Nuxt 3已经发布,我更新了我的答案。

export default defineEventListener(event => {
  const query = getQuery(event)
})

https://github.com/unjs/h3 是将 API 组合在一起的服务器。


1
import * as url from "url";

const params = url.parse(req.url as string, true).query;
const {id} = params

欢迎来到Stack Overflow,并感谢您贡献答案。请您编辑您的答案,加入代码解释,这将有助于未来的读者更好地理解代码,特别是对该编程语言不熟悉并且在理解相关概念方面遇到困难的社区成员。 - Jeremy Caney
1
这是在nuxt 3中做这件事的“标准”方式吗?我在官方文档中找不到任何信息。 - cub33
@cub33 请查看Curtis Rabon的答案。 - shtse8

1

针对新手nuxt3开发者的提示

现在,h3路由会提供一个CompatibilityEvent,而不再使用req和res。

因此,您可以像这样使用它:

export default defineEventHandler(async (event) => {
     const id = event.context.params.id;

     // Use the id here
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接