Я использовал Route Handler для получения данных из внешней конечной точки. Внешняя конечная точка возвращает статус 400 или любую ошибку, но когда я локально нажимаю API из клиентского компонента (например, /api/route.ts), я получаю статус 200, но ответ 400, иначе он не перехватывается( ошибка).
Есть ли способы решить эту проблему?
Спасибо.
Я пытаюсь использовать NextResponse.next() внутри обработчика маршрута, но он говорит, что .next() не может находиться внутри обработчиков маршрута. Я ожидаю, что он будет «прозрачным», чтобы возвращаемая ошибка соответствовала ответу от внешней конечной точки.
/api/что-то
export async function POST(req: Request) {
const something: DataInterface = await req.json();
const data = something.requestData;
try {
const res = await instance.post(
`i hit the endpoint here`,
data,
{
headers: {' some header '}
});
const { output_schema } = res.data;
const generateUrl = `i generate some url here`;
const response = { output_schema, generateUrl };
return NextResponse.json(response);
} catch (error) {
return NextResponse.json(error);
}
}
/приложение/что-то
try {
const { data } = await axios.post("/api/something", {
requestData,
});
const { generateUrl, ...output_shema } = data;
setUrl(generateUrl);
setResponse(output_shema);
} catch (error) {
setResponse(error);
} finally {
setIsLoading(false);
}
@YoussoufOumar, я называю это так try { const { data } = await axios.post("/api/something", { requestData, }); const { generateUrl, ...output_shema } = data; setUrl(generateUrl); setResponse(output_shema); } catch (error) { setResponse(error); } finally { setIsLoading(false); }
Теперь можете показать код в /api/route.ts? Кстати, вы можете редактировать свой вопрос.
@YoussoufOumar спасибо за совет! я уже добавил это в отредактированный вопрос
Не за что ! Я вставил ответ. Проверьте это и дайте мне знать, пожалуйста.





В блоге обработчика маршрута вам необходимо указать статус, поскольку по умолчанию Next.js будет использовать значение 200.
return NextResponse.json(error, { status: 400 });
Если объект error содержит достаточно информации, вы можете установить статус динамически, например:
return NextResponse.json(error, { status: error.response.status });
Спасибо за ваш ответ, я устраняю ошибку с помощью консоли, затем меняю код на: ... } catch (error: any) { return NextResponse.json(error, { status: error.status }); }, и все работает отлично, спасибо!
Можете ли вы код, который у вас есть в /api/route.ts, и как вы его вызываете?