Maison > interface Web > js tutoriel > Récupérer des données avec Axios dans Next.js Un guide complet

Récupérer des données avec Axios dans Next.js Un guide complet

Mary-Kate Olsen
Libérer: 2025-01-22 20:42:10
original
585 Les gens l'ont consulté

Next.js 15 propose des composants serveur et client pour la récupération de données, chacun avec des forces et des faiblesses uniques en termes de performances, de référencement et de comportement. Axios, un choix populaire pour sa simplicité, fonctionne efficacement dans les deux cas. Ce guide explore l'utilisation d'Axios dans les deux types de composants, en mettant en évidence les principales différences et les meilleures pratiques.

Fetching Data with Axios in Next.js  A Complete Guide


Composants serveur et client : une comparaison

Feature Server Component Client Component
Rendering Location Server-side, before HTML delivery. Client-side, post-page load.
SEO Impact SEO-friendly; data in initial HTML. Not SEO-friendly; client-side data fetch.
View Source Data Data visible in HTML source. Data fetched dynamically; not in source.
Reactivity Non-reactive; for static data. Reactive; ideal for interactive UIs.
Fonctionnalité Composant serveur Composant Client
ête> Emplacement du rendu Côté serveur, avant la livraison HTML. Côté client, après le chargement de la page. Impact SEO Optimisé pour le référencement ; données dans le HTML initial. Pas convivial pour le référencement ; récupération de données côté client. Afficher les données sources Données visibles dans la source HTML. Données récupérées dynamiquement ; pas dans les sources. Réactivité Non réactif ; pour les données statiques. Réactif ; idéal pour les interfaces utilisateur interactives.

Axios dans les composants serveur

Les composants du serveur récupèrent les données lors du rendu côté serveur. Cela améliore le référencement en incluant les données directement dans le HTML.

Exemple : récupération de données côté serveur

// app/server-component-example/page.tsx
import axios from 'axios';

interface Post {
  id: number;
  title: string;
  body: string;
}

const fetchPosts = async (): Promise<Post[]> => {
  const { data } = await axios.get<Post[]>('https://jsonplaceholder.typicode.com/posts');
  return data;
};

export default async function ServerComponentExample() {
  const posts = await fetchPosts();

  return (
    <div>
      <h1>Server-Fetched Posts</h1>
      <ul>
        {posts.map((post) => (
          <li key={post.id}>{post.title}</li>
        ))}
      </ul>
    </div>
  );
}
Copier après la connexion

Considérations clés :

  1. Optimisation du référencement : Les données côté serveur améliorent la visibilité du référencement.
  2. Accès au code source : Les données sont visibles dans le code source du navigateur.
  3. Cas d'utilisation idéaux : Données statiques ou critiques pour le référencement nécessitant un minimum de mises à jour ou d'interactivité.

Axios dans les composants clients

Les composants clients récupèrent les données après le chargement de la page dans le navigateur. Cette approche n'est pas optimisée pour le référencement mais permet des mises à jour dynamiques.

Exemple : récupération de données côté client

'use client';

import axios from 'axios';
import { useEffect, useState } from 'react';

interface Post {
  id: number;
  title: string;
  body: string;
}

export default function ClientComponentExample() {
  const [posts, setPosts] = useState<Post[]>([]);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    const fetchPosts = async () => {
      try {
        const { data } = await axios.get<Post[]>('https://jsonplaceholder.typicode.com/posts');
        setPosts(data);
      } catch (error) {
        console.error('Error fetching posts:', error);
      } finally {
        setLoading(false);
      }
    };

    fetchPosts();
  }, []);

  if (loading) return <div>Loading...</div>;

  return (
    <div>
      <h1>Client-Fetched Posts</h1>
      <ul>
        {posts.map((post) => (
          <li key={post.id}>{post.title}</li>
        ))}
      </ul>
    </div>
  );
}
Copier après la connexion

Considérations clés :

  1. Limites du référencement : La récupération de données côté client ne profite pas directement au référencement.
  2. Masquage du code source : Les données ne sont pas exposées dans le code source du navigateur.
  3. Réactivité : Idéal pour les contenus qui changent fréquemment ou sont interactifs avec l'utilisateur.

Choisir entre la récupération du serveur et du client

Use Case Recommended Component
SEO-critical data (blog posts) Server Component
User-specific or dynamic data Client Component
Frequently updated data Client Component
Static, rarely changing data Server Component
Cas d'utilisation Composant recommandé
ête> Données critiques pour le référencement (articles de blog) Composant serveur Données spécifiques à l'utilisateur ou dynamiques Composant client Données fréquemment mises à jour Composant client Données statiques, rarement changeantes Composant serveur

Meilleures pratiques pour Axios dans Next.js 15

  1. Gestion des erreurs : Utilisez toujours des blocs try...catch pour une gestion robuste des erreurs.
  2. Priorité SEO : Utiliser les composants du serveur pour les données ayant un impact sur le référencement.
  3. Réduction de la redondance : Évitez les appels Axios en double ; envisagez des bibliothèques comme React Query ou SWR pour une gestion efficace des données.
  4. Sécurité : Protégez les données sensibles récupérées côté client pour éviter leur exposition.

SEO et récupération de données

  • Composants du serveur : Améliorez le référencement en intégrant des données dans le code HTML initial.
  • Composants clients : N'améliore pas directement le référencement en raison du chargement dynamique des données.

Conclusion

Axios propose une approche flexible et simple de la récupération de données dans Next.js 15. En tirant parti des capacités distinctes des composants serveur et client et en adhérant aux meilleures pratiques, les développeurs peuvent créer des applications performantes, sécurisées et optimisées pour le référencement. N'oubliez pas de donner la priorité aux composants serveur pour les données statiques et critiques pour le référencement, et aux composants clients pour les interactions utilisateur dynamiques. Mettez toujours en œuvre des mesures de gestion des erreurs et de sécurité approfondies.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal