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

How to get route parameters from Nuxt 3 server

我有以下 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
import * as url from "url";

const params = url.parse(req.url as string, true).query;
const {id} = params
import { useQuery } from 'h3'
export default (req, res) => {
    const { id } = useQuery(req)
}

https://github.com/unjs/h3 是服务器将 api 放在一起。

对于较新的 nuxt3 开发人员

h3 路由现在为您提供 CompatibilityEvent,而不是使用 req 和 res。

因此你可以这样使用它:

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

     // Use the id here
});