Не Next.js Маршрут API кэширует результат запроса?

#reactjs #api #next.js

#reactjs #API #next.js

Вопрос:

У меня есть Next.js приложение, которое использует сторонний API для отображения некоторых данных. Я запрашиваю эти данные с помощью Next.js Маршруты API. Вот мой /pages/api/data.js .

 const handler = async (req, res) => {
    const data = await fetch('https://api.example.com/v1/data');

    res.status(200).json(data);
};

export default handler;
 

Как это работает за кулисами? Извлекает ли он сторонний API каждый раз, когда я отправляю запросы /api/data ? Или он кэширует результаты во время сборки?

Ответ №1:

Он делает это каждый раз, когда вы отправляете запрос. Если вы хотите сделать это во время сборки, вам необходимо получить данные в функции getStaticProps:

 export async function getStaticProps(context) {
  const data = await fetch('https://api.example.com/v1/data');

  if (!data) {
    return {
      notFound: true,
    }
  }

  return {
    props: { data: res.status(200).json(data) }, // will be passed to the page component as props
  }
}