Невозможно правильно передать информацию об ошибках из моего маршрута API NextJS.
создал проект по умолчанию, используяnpx create-next-app@latest
источник/страницы/index.tsx
import useSWR from 'swr'
const fetcher = (url: string) => fetch(url).then((r) => r.json());
export default function Home() {
const { data, error, isLoading } = useSWR('/api/hello', fetcher,{
onSuccess: async (data) => {
console.log('we got a success');
},
onError: (err) => {
console.log('we got an error');
}
});
console.log(`data: ${JSON.stringify(data)}`);
console.log(`error: ${JSON.stringify(error)}`);
console.log(`isLoading: ${JSON.stringify(isLoading)}`);
return (
<></>
)
}
src/pages/api/hello.tsx
import type { NextApiRequest, NextApiResponse } from 'next'
type Data = {
name: string
}
export default function handler(
req: NextApiRequest,
res: NextApiResponse<Data>
) {
res.status(400).json({ name: 'John Doe' })
//res.status(400).end();
}
С помощью приведенного выше кода я получаю журнал из метода, консоль печатает, что у нас есть данные (имя: «Джон Доу»), и возникает ошибка.undefined
. Если прокомментировать строку с помощьюjson({...})
и раскомментируйте тот, у которого.end()
Я получаю журнал, но не могу передать дополнительную информацию. Похоже, любой метод отправкиNextApiResponse
нравитьсяjson()
илиsend()
приведет к вызову .
Я хочу иметь возможность отправлять объект JSON в случае ошибки иonSuccess
илиonError
вызываться в соответствии со статусом, переданнымres.status()
. Что мне не хватает?