CodeBlanks Logo Icon CodeBlanks

Sepet API'si

Sepete ürün ekleyen bir POST API rotası yazarsın.

Proje sonucu

Bu projede Next.js ile bir mağaza kurduk: statik ana sayfa, dinamik ürün sayfası ve sepet API'si. Üç temel App Router özelliğini (SSG, dinamik rota, API rotası) birleştirdik.

Statik ana sayfa build sırasında, dinamik ürün generateStaticParams ile, sepet API'si route.js ile çalışır.

Proje sonunda gerçek bir mağazanın iskeletine sahipsin: ürün listele, detay gör, sepete ekle.

Son adım: birleştir

Şimdi tüm parçaları tek bir akışta birleştireceksin. products dizisini, Home, generateStaticParams ve Page bileşenlerini birlikte yazacaksın.

Home ürün listesini, Page ise seçili ürünün detayını göstersin. generateStaticParams build sırasında hangi ürün sayfalarının üretileceğini söyler.

Bu yapı, gerçek e-ticaret sitelerinin temelidir; SEO dostu ve hızlıdır.

Uygulama Mağaza final

Tüm parçaları birleştir: Home bileşeni yaz (products dizisi, <ul> içinde <li>{product.name}</li> bas). generateStaticParams yaz (products.map(p => ({ params: { id: String(p.id) } }))). Page bileşeni yaz ({ params } destructure, find ile ürünü bul, <h1>{product.name}</h1>). const products = [{ id: 1, name: "Kalem" }, { id: 2, name: "Defter" }] tanımla. export default Home ve export default Page.

Başlangıç kodu

App.jsx
// app/page.js ve app/product/[id]/page.js

// products dizisi, Home, generateStaticParams ve Page buraya yaz

Örnek çözüm

App.jsx
// app/page.js
const products = [{ id: 1, name: "Kalem" }, { id: 2, name: "Defter" }];

export default function Home() {
  return (
    <ul>
      {products.map((product) => (
        <li key={product.id}>{product.name}</li>
      ))}
    </ul>
  );
}

// app/product/[id]/page.js
export async function generateStaticParams() {
  return products.map((p) => ({ params: { id: String(p.id) } }));
}

export default function Page({ params }) {
  const product = products.find((p) => p.id === Number(params.id));
  return <h1>{product.name}</h1>;
}

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bu projede olmayan özellik?

  • Dinamik ürün sayfası
  • Statik ana sayfa
  • Kimlik doğrulama Doğru cevap
  • Sepet API'si

Açıklama: Proje kapsamı = statik + dinamik + API.

2 generateStaticParams return

Soru
export async function generateStaticParams() {
  return products.map((p) => ({
    ____: { id: String(p.id) }
  }));
}
Cevap
export async function generateStaticParams() {
  return products.map((p) => ({
    params: { id: String(p.id) }
  }));
}

Açıklama: params id'yi URL'e bağlar.

3 Sepet API'si: kavramları eşleştir

Kavram Anlamı
app/page.js Statik ana
[id]/page.js Dinamik ürün
api/cart/route.js Sepet API
generateStaticParams Statik üretim

İleri seviye bölümündeki tüm dersler