Rumah > hujung hadapan web > tutorial js > Next.js: Penghalaan Dinamik dengan Penyepaduan API.

Next.js: Penghalaan Dinamik dengan Penyepaduan API.

Susan Sarandon
Lepaskan: 2024-12-02 03:43:13
asal
639 orang telah melayarinya

Next.js: Dynamic Routing with API Integration.

Ideanya

Next.js menyediakan sistem penghalaan berasaskan fail yang menyokong laluan dinamik (cth., /product/[id]). Anda boleh menggabungkan ini dengan pengambilan data dinamik untuk mencipta aplikasi yang fleksibel dan berskala. Ini amat berguna untuk kes seperti halaman produk e-dagang, profil pengguna atau sebarang kandungan dengan pengecam unik.

Contoh: Halaman Produk Dinamik

1. Sediakan Laluan Dinamik

Buat fail bernama [id].tsx di dalam folder seperti /pages/product/:

halaman/produk/[id].tsx

2. Ambil Data untuk Laluan Dinamik

// pages/product/[id].tsx

import { GetStaticPaths, GetStaticProps } from 'next';

type ProductProps = {
  product: {
    id: string;
    name: string;
    description: string;
    price: number;
  };
};

export default function ProductPage({ product }: ProductProps) {
  return (
    <div>
      <h1>{product.name}</h1>
      <p>{product.description}</p>
      <p>Price: ${product.price}</p>
    </div>
  );
}

// Generate dynamic paths for the product pages
export const getStaticPaths: GetStaticPaths = async () => {
  const res = await fetch('https://api.example.com/products');
  const products = await res.json();

  // Map over the products to define paths
  const paths = products.map((product: { id: string }) => ({
    params: { id: product.id },
  }));

  return {
    paths, // Pre-render these paths at build time
    fallback: 'blocking', // Dynamically render other pages on request
  };
};

// Fetch product data for each page
export const getStaticProps: GetStaticProps = async ({ params }) => {
  const res = await fetch(`https://api.example.com/products/${params?.id}`);
  const product = await res.json();

  // Pass the product data as props
  return {
    props: { product },
    revalidate: 10, // Revalidate every 10 seconds
  };
};
Salin selepas log masuk

3. Mengendalikan Halaman Tiada

Untuk mengendalikan kes di mana id tidak wujud, kembalikan sifat notFound dalam getStaticProps:

export const getStaticProps: GetStaticProps = async ({ params }) => {
  const res = await fetch(`https://api.example.com/products/${params?.id}`);

  if (res.status === 404) {
    return { notFound: true };
  }

  const product = await res.json();

  return {
    props: { product },
    revalidate: 10,
  };
};
Salin selepas log masuk

Ciri Utama Pendekatan Ini:

  1. Mesra SEO: Halaman diprapaparkan dengan HTML penuh, menjadikannya hebat untuk enjin carian.

  2. Boleh skala: Anda boleh menggunakan pemaparan sandaran (sandaran: 'menyekat') untuk menjana halaman secara dinamik untuk data baharu.

  3. Kemas Kini Masa Nyata: Gabungkan dengan pengesahan semula untuk memastikan data kekal segar tanpa penggunaan manual.

  4. Pengendalian Ralat: Tangani 404s atau ralat lain dengan baik dengan notFound.

Kaedah ini membolehkan anda membina aplikasi web yang sangat dinamik dan responsif yang berskala dengan mudah!

Atas ialah kandungan terperinci Next.js: Penghalaan Dinamik dengan Penyepaduan API.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan