Как получить параметры маршрута с сервера Nuxt 3

У меня есть один из следующих URL-адресов API. В конце концов, для моего варианта использования не имеет значения, какой из этих URL-адресов мне придется использовать, но в настоящее время ни один из них не работает.

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

или

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

Как бы я получил TRACKIDв коде API? Следующий код приводит к 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

4 ответа

      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
});
      import * as url from "url";

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

У меня нет ответа, но я спросил на форумах Nuxt, так как считаю, что эта функция должна быть изначально поддерживаться. Возможно, там ответят: https://github.com/nuxt/framework/discussions/1535

Другие вопросы по тегам