如何从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
});
我有以下 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
});