Sobes.tech
Junior

Où est-il préférable d'effectuer les requêtes au backend?

sobes.tech IA

Réponse de l'IA

Effectuer des requêtes au backend est préférable en utilisant des méthodes asynchrones dans le code:

  1. Côté client (dans le navigateur):

    • En utilisant l'API fetch ou une bibliothèque comme Axios.
    • Convient pour les actions interactives de l'utilisateur, le chargement dynamique de données, l'envoi de formulaires.
    • Permet de créer des SPA (Applications Monopage).
    • Implémenté en JavaScript/TypeScript.
    // Exemple avec fetch
    async function fetchData() {
      try {
        const response = await fetch('/api/data');
        if (!response.ok) {
          throw new Error(`Erreur HTTP! statut: ${response.status}`);
        }
        const data = await response.json();
        console.log(data);
      } catch (error) {
        console.error('Erreur lors de la récupération des données:', error);
      }
    }
    
  2. Côté serveur (par exemple, avec des frameworks SSR/SSG):

    • Dans des frameworks comme Next.js ou Nuxt.js (pour React et Vue respectivement).
    • Les données peuvent être obtenues lors de la compilation (SSG) ou à chaque requête (SSR).
    • Améliore le SEO et la performance (moins d'écran blanc), car la page est rendue avec des données.
    • Permet d'éviter les problèmes de CORS.
    • Exemples de méthodes dans Next.js : getStaticProps, getServerSideProps.
    // Exemple avec Next.js (getServerSideProps)
    export async function getServerSideProps(context) {
      const res = await fetch('https://api.example.com/data');
      const data = await res.json();
    
      if (!data) {
        return {
          notFound: true, // Afficher la page 404
        };
      }
    
      return {
        props: { data }, // Passer les données en tant que props au composant de la page
      };
    }
    

Le choix dépend de l'interactivité requise, des besoins en SEO, du type d'application (SPA, MPA) et du framework utilisé. Une combinaison de ces approches est souvent utilisée.