Невозможно правильно передать информацию об ошибках из моего маршрута 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(). Что мне не хватает?

0 ответов

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