İstek doğrulama ve hata yönetimi ile tipli API route handler.
import { NextRequest, NextResponse } from class=class="text-emerald-400">"text-emerald-400">'next/server'
interface CreateItemBody {
name: string
description?: string
}
export async function GET(request: NextRequest) {
const { searchParams } = request.nextUrl
const page = Number(searchParams.get(class=class="text-emerald-400">"text-emerald-400">'page')) || 1
const limit = Number(searchParams.get(class=class="text-emerald-400">"text-emerald-400">'limit')) || 10
class=class="text-emerald-400">"text-gray">// Replace with your data source
const items = Array.from({ length: limit }, (_, i) => ({
id: (page - 1) * limit + i + 1,
name: class="text-emerald-400">`Item ${(page - 1) * limit + i + 1}`,
}))
return NextResponse.json({ data: items, page, limit })
}
export async function POST(request: NextRequest) {
try {
const body: CreateItemBody = await request.json()
if (!body.name) {
return NextResponse.json({ error: class=class="text-emerald-400">"text-emerald-400">'Name is required' }, { status: 400 })
}
return NextResponse.json({ data: { id: Date.now(), ...body } }, { status: 201 })
} catch {
return NextResponse.json({ error: class=class="text-emerald-400">"text-emerald-400">'Invalid JSON' }, { status: 400 })
}
}Bu dosyayı app/api/items/route.ts konumuna yerleştirin. Sayfalama ile GET ve doğrulama ile POST işlemlerini yönetir. Frontend'den fetch() ile /api/items adresine erişin.
Fikrinizi nasıl hayata geçirebileceğimizi konuşalım. İlk konseptten üretime hazır ürüne kadar — yanınızdayız.