AI Bültenim Yapay Zeka Haber Portalı Logosu
Kod

API route rate limit

Basit IP rate limit’li API route şablonu.

Kod Prompt Kütüphanesi için temsili kategori görseli

Prompt Metni

Next.js App Router için POST /api/generate Route Handler yaz.

- IP başına saatte 10 istek kabul et.
- Tek sunuculu demo için Map kullan.
- Limit aşılırsa 429 JSON dön.
- İstek gövdesindeki prompt boşsa 400 dön.
- Üretimde neden paylaşımlı bir depolama gerektiğini iki cümleyle açıkla.

Prompt Sonucu

import type { NextRequest } from 'next/server' type Bucket = { count: number; resetAt: number } const buckets = new Map<string, Bucket>() const WINDOW_MS = 60 * 60 * 1000 const LIMIT = 10 export async function POST(request: NextRequest) { const ip = request.headers.get('x-forwarded-for')?.split(',')[0]?.trim() ?? 'unknown' const now = Date.now() const current = buckets.get(ip) const bucket = !current || current.resetAt <= now ? { count: 0, resetAt: now + WINDOW_MS } : current if (bucket.count >= LIMIT) { return Response.json( { error: 'İstek limiti aşıldı.', resetAt: bucket.resetAt }, { status: 429 } ) } const body: unknown = await request.json() const prompt = typeof body === 'object' && body !== null && 'prompt' in body && typeof body.prompt === 'string' ? body.prompt.trim() : '' if (!prompt) { return Response.json({ error: 'Prompt zorunludur.' }, { status: 400 }) } bucket.count += 1 buckets.set(ip, bucket) return Response.json({ result: 'Demo çıktı', remaining: LIMIT - bucket.count }) } Map yalnızca aynı process içindeki istekleri görür ve yeniden başlatmada sıfırlanır. Çoklu instance kullanılan üretim ortamında tüm instance'ların ortak sayacı görebilmesi için Redis veya benzeri paylaşımlı, atomik bir depo kullanılmalıdır.

AI Bültenim prompt kütüphanesi — Tüm promptlar