Maison > interface Web > js tutoriel > Pourquoi devrais-je éviter d'utiliser Fetch pour les API internes dans getServerSideProps() ?

Pourquoi devrais-je éviter d'utiliser Fetch pour les API internes dans getServerSideProps() ?

DDD
Libérer: 2024-11-16 18:29:03
original
511 Les gens l'ont consulté

Why Should I Avoid Using Fetch for Internal APIs in getServerSideProps()?

Récupération d'API interne avec getServerSideProps dans Next.js

Les nouveaux arrivants sur Next.js rencontrent souvent un dilemme lorsqu'ils traitent de la récupération de données entre des pages ou composants. Par exemple, lorsque vous utilisez getServerSideProps() pour récupérer une API interne qui renvoie des données utilisateur, il est naturel de penser que cette approche est idéale à des fins de référencement. Cependant, la documentation Next.js déconseille d'utiliser fetch() pour appeler des routes API dans getServerSideProps().

Pourquoi éviter de récupérer des routes API dans getServerSideProps() ?

L'appel d'une route API interne avec fetch() dans getServerSideProps() n'est pas nécessaire car getServerSideProps() et les routes API s'exécutent sur le serveur. Cette requête supplémentaire est inefficace et n'apporte aucun avantage supplémentaire.

Pratique recommandée

Au lieu d'appeler l'API interne depuis getServerSideProps(), la logique doit être directement importée depuis le Itinéraire API. Cela permet à getServerSideProps() d'interagir directement avec la base de données, le système de fichiers ou d'autres ressources sans introduire d'appels API inutiles.

Exemple de refactor

Considérez une route API utilisée pour la récupération données provenant d'une API externe :

// pages/api/user
export default async function handler(req, res) {
  const response = await fetch(/* external API endpoint */);
  const jsonData = await response.json();
  res.status(200).json(jsonData);
}
Copier après la connexion

Cette logique peut être extraite dans une fonction distincte qui peut être utilisée à la fois dans la route API et dans getServerSideProps() :

// pages/api/user
export async function getData() {
  const response = await fetch(/* external API endpoint */);
  const jsonData = await response.json();
  return jsonData;
}

export default async function handler(req, res) {
  const jsonData = await getData();
  res.status(200).json(jsonData);
}
Copier après la connexion

Cela permet au Fonction getData() à réutiliser dans getServerSideProps() :

// pages/home
import { getData } from './api/user';

export async function getServerSideProps(context) {
  const jsonData = await getData();
  //...
}
Copier après la connexion

En suivant ces directives, les développeurs peuvent améliorer les performances et l'efficacité de leurs applications Next.js tout en conservant les avantages du référencement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal