feat(WEB-104): add on-demand revalidation for cache
This commit is contained in:
45
app/api/revalidate/route.ts
Normal file
45
app/api/revalidate/route.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import { env } from "@/env/server"
|
||||
import { revalidateTag } from 'next/cache'
|
||||
|
||||
import type { NextRequest } from 'next/server'
|
||||
|
||||
export async function POST(request: NextRequest) {
|
||||
try {
|
||||
const secret = request.nextUrl.searchParams.get("secret") ?? ""
|
||||
const tag = request.nextUrl.searchParams.get("tag") ?? ""
|
||||
|
||||
if (secret !== env.REVALIDATE_SECRET) {
|
||||
return Response.json(
|
||||
{
|
||||
message: 'Invalid secret',
|
||||
now: Date.now(),
|
||||
revalidated: false,
|
||||
},
|
||||
{
|
||||
status: 401,
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
if (!tag) {
|
||||
return Response.json(
|
||||
{
|
||||
message: 'Missing tag param',
|
||||
now: Date.now(),
|
||||
revalidated: false,
|
||||
},
|
||||
{
|
||||
status: 400,
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
revalidateTag(tag)
|
||||
|
||||
return Response.json({ revalidated: true, now: Date.now() })
|
||||
} catch (error) {
|
||||
console.info("Failed to revalidate tag")
|
||||
console.error(error)
|
||||
return Response.json({ revalidated: false, now: Date.now() }, { status: 500 })
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user