Я использую Next.js 14.2.3 и пытаюсь получить маршрут API /api/tmp из компонента chat.tsx, но выдается ошибка 404, хотя я использую route.ts. Почему?
Обновлено: Это потому, что chat.tsx является клиентским компонентом? Если да, то как я могу получить маршрут API в клиентском компоненте?
chat.tsx:
"use client";
export default function Chat() {
/.../
const test = await fetch("/api/tmp", {
method: "GET",
});
/.../
}
route.ts:
import { NextResponse } from "next/server";
export async function GET(request: any) {
return NextResponse.json({ message: "Hello World" }, { status: 200 });
}
Состав:
src
|__app
|__components
| |__chat.tsx
|__hooks
|__pages
| |__api
| |__tmp
| |__route.ts
|__shared
|__styles
|__types
|__layout.tsx
|__page.tsx
Терминал:
GET /api/tmp 404 in 61ms





Проблема :
Получение маршрута API Next.js 14 выдает ошибку 404, хотя я использую Route.ts
Причина :
Неправильный URL
Решение :
/pages/api/tmp./api/tmp заставляет NextJS искать внизу app/api/tmp поэтому выдает 404/api/tmp, просто сохраните папку API в приложении (app/api).Читать далее :
Обработчики маршрутов: https://nextjs.org/docs/app/building-your-application/routing/route-handlers
Создание маршрутов: https://nextjs.org/docs/app/building-your-application/routing/defining-routes#creating-routes
Если у вас есть какие-либо сомнения, оставьте комментарий (при необходимости я обновлю ответ)
похоже, что каталог api/temp вложен внутри каталога страниц. Вы пробовали
"/pages/api/tmp"в качестве конечной точки запроса на получение?