Heim >Web-Frontend >js-Tutorial >Sollten Sie „fetch()' für interne API-Aufrufe in „getServerSideProps' (Next.js) verwenden?

Sollten Sie „fetch()' für interne API-Aufrufe in „getServerSideProps' (Next.js) verwenden?

Linda Hamilton
Linda HamiltonOriginal
2024-11-13 03:08:02287Durchsuche

Should You Use `fetch()` for Internal API Calls in `getServerSideProps` (Next.js)?

Interner API-Abruf mit getServerSideProps? (Next.js)

In Next.js können Sie mit der Funktion getServerSideProps Daten vom Server abrufen, bevor Sie eine Seite rendern, um sie für SEO geeignet zu machen. In der offiziellen Dokumentation wird jedoch davon abgeraten, fetch() zum Aufrufen interner API-Routen in getServerSideProps zu verwenden.

Grund zur Vermeidung

Der Aufruf einer internen API-Route von getServerSideProps ist überflüssig, weil beide laufen auf dem Server. Stattdessen sollte die Logik der API-Route direkt in getServerSideProps implementiert werden, um unnötige HTTP-Anfragen zu vermeiden.

Alternativer Ansatz

Zur Nutzung der Logik einer API-Route in getServerSideProps :

  • Extrahieren Sie die Abruflogik (z. B. Datenbankzugriff oder externe API-Aufrufe) in eine separate Funktion, die sowohl von der API-Route als auch von getServerSideProps gemeinsam genutzt werden kann.
  • Rufen Sie in der API-Route diese gemeinsam genutzte Funktion auf, um die Daten abzurufen und zurückzugeben.
  • Rufen Sie in getServerSideProps dieselbe gemeinsam genutzte Funktion auf Holen Sie sich die Daten direkt aus dem Server.

Beispiel

pages/api/user.js (API-Route mit gemeinsamer Logik)

import { getData } from "./userData";

export async function handler(req, res) {
  const data = await getData();
  res.status(200).json({ data });
}

pages/home.js (getServerSideProps mit shared Logik)

import { getData } from "./api/user";

export async function getServerSideProps(context) {
  const data = await getData();
  // ... other operations ...
}

Das obige ist der detaillierte Inhalt vonSollten Sie „fetch()' für interne API-Aufrufe in „getServerSideProps' (Next.js) verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn