route.ts 1.0 KB

12345678910111213141516171819202122232425
  1. import { NextRequest, NextResponse } from 'next/server';
  2. import { revalidateTag } from 'next/cache';
  3. // 캐시 태그 수동 무효화 — Admin/운영에서 config·market·stock 데이터 변경 후 즉시 반영용.
  4. // 사용: POST /api/revalidate?tag=site-config&secret=XXX (secret = 환경변수 REVALIDATE_SECRET)
  5. // 태그: 'site-config'(설정/메뉴) · 'market-data'(시장 T+1) · 'stock-data'(종목 T+1)
  6. // REVALIDATE_SECRET 미설정 시 항상 401 (안전 기본값) — 설정 전엔 revalidate 주기(초)로만 갱신.
  7. export async function POST(request: NextRequest)
  8. {
  9. const secret = request.nextUrl.searchParams.get('secret');
  10. if (!process.env.REVALIDATE_SECRET || secret !== process.env.REVALIDATE_SECRET) {
  11. return NextResponse.json({ success: false, message: 'unauthorized' }, { status: 401 });
  12. }
  13. const tag = request.nextUrl.searchParams.get('tag');
  14. if (!tag) {
  15. return NextResponse.json({ success: false, message: 'tag required' }, { status: 400 });
  16. }
  17. revalidateTag(tag);
  18. return NextResponse.json({ success: true, tag });
  19. }