웹후크를 사용하여 온디맨드 정적 Next.js 페이지 재검증
9516 단어 tutorialjavascriptnextjswebdev
다이브 인
Incremental Static Regeneration 잘 작동합니다. 그래도 정적 페이지를 즉시 재검증해야 하는 경우가 있습니다. 재검증 기간이 1시간인 정적 페이지가 있다고 가정해 보겠습니다. 전체 시간 동안
getStaticProps
함수의 오래된 데이터가 표시됩니다. 여기에서 On-demand Revalidation이 개입합니다.Next.js 팀은 유용한 정보example를 제공합니다.
// pages/api/revalidate.js
export default async function handler(req, res) {
// Check for secret to confirm this is a valid request
if (req.query.secret !== process.env.MY_SECRET_TOKEN) {
return res.status(401).json({ message: 'Invalid token' })
}
try {
// this should be the actual path not a rewritten path
// e.g. for "/blog/[slug]" this should be "/blog/post-1"
await res.revalidate('/path-to-revalidate')
return res.json({ revalidated: true })
} catch (err) {
// If there was an error, Next.js will continue
// to show the last successfully generated page
return res.status(500).send('Error revalidating')
}
}
다음 URL 구조를 사용하여 경로에 액세스할 수 있습니다.
https://<your-site.com>/api/revalidate?secret=<token>
Next.js 앱에서 페이지의 유효성을 다시 확인하는 것은 매우 쉬울 수 있지만 모든 경우에 작동하지는 않습니다. 사용자별로 재확인을 제한하고 싶다고 가정해 보겠습니다(각 사용자는 자신의 페이지만 재확인할 수 있음). 여기서 웹후크는 매우 유용합니다.
웹후크 구현
재확인 페이지에 요청을 보내 페이지를 재확인할 수 있습니다. 내가 싫어하는 것은 백엔드의 모든 정적 페이지 경로를 "기억"하는 것입니다.
유효성 재검사를 위해 엔터티 → 페이지 흐름을 사용할 수 있습니다.
백엔드는 모든 엔티티의 변경 사항을 알고 Webhook에 요청을 보냅니다. 프런트엔드는 정적 페이지의 재검증을 제어합니다.
코드 부분은 매우 간단합니다.
import type { NextApiRequest, NextApiResponse } from 'next';
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method !== 'POST') {
return res.status(400).json({ message: 'Method must be POST' });
}
const token = req.headers['revalidation-token']?.toString();
if (token !== process.env.REVALIDATION_TOKEN) {
return res.status(401).json({ message: 'Invalid token' });
}
try {
await Promise.all([
res.revalidate(`/users/${req.query.slug}`),
res.revalidate(`/users/${req.query.slug}/products`),
]);
return res.status(200).send({ message: 'Revalidated' });
} catch (err) {
return res.status(500).send({ message: 'Error revalidating' });
}
}
개인적으로 저는 간단하고 편리한 건축 결정을 좋아합니다. Next.js가 우리에게 그런 기회를 준다는 것이 기쁩니다.
를 통해 저에게 연락 주시기 바랍니다. 건배 👋
Reference
이 문제에 관하여(웹후크를 사용하여 온디맨드 정적 Next.js 페이지 재검증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/igrvs/revalidate-static-nextjs-pages-on-demand-with-webhooks-5eng텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)