Une API Python d'un côté, le front-end de l'autre : ma méthode
3 minutes de lecture ·
Quand un projet doit récupérer des données, surtout lorsqu'elles sont volumineuses ou sensibles, il est impératif de les nettoyer avant qu'elles n'arrivent à l'écran. Le front-end ne doit recevoir que les données traitées et réellement utiles : celles qu'il peut exploiter, sans rien divulguer de risqué. C'est le rôle d'une API Python qui tourne de son côté : elle récupère, trie et prépare les données, et le front-end Next.js n'a plus qu'à les demander. Voici comment je construis ce duo, étape par étape.
Le front affiche, l'API réfléchit.
Pourquoi séparer les deux ? D'abord pour la sécurité : les clés d'accès à une base de données ou à un service externe restent sur le serveur, jamais dans le navigateur. Ensuite parce que Python est taillé pour les données : les outils pour les analyser, les croiser et les transformer y sont nombreux et éprouvés. Enfin, une même API peut servir plusieurs interfaces : un site aujourd'hui, une application mobile demain.
Étape 1 : collecter et préparer les données
Selon le projet, les données ont trois origines. Elles viennent d'une autre API (un service de paiement, de météo ou un CRM), que mon API interroge à son tour, d'une base de données où elles sont déjà stockées, ou bien je les crée de toutes pièces lorsqu'elles n'existent nulle part ailleurs. Dans tous les cas, je les nettoie et les mets en forme avant de les exposer. Et quand la source est lente ou facturée à l'appel, je garde le résultat en cache : inutile de refaire tout ce travail à chaque demande.
Étape 2 : ouvrir des guichets avec FastAPI
Une API, c'est un peu une série de guichets : chacun a son adresse et son rôle, par exemple /produits pour consulter un catalogue. Avec FastAPI, chaque guichet s'écrit comme une simple fonction Python. Je décris aussi la forme des données attendues : si une demande arrive incomplète ou mal formée, elle est refusée avant même d'atteindre mes traitements. Et une page de documentation se génère toute seule, pour tester chaque guichet avant d'écrire la moindre ligne d'interface.
Étape 3 : brancher le front-end
Côté Next.js, le front-end frappe au bon guichet avec un simple fetch : l'adresse, la méthode, et les données à envoyer s'il y en a. Comme cette adresse change entre mon ordinateur et la mise en ligne, je la range dans une variable d'environnement plutôt que de l'écrire en dur. Dernier détail, et non des moindres : par sécurité, le navigateur interdit à une page de lire la réponse d'un autre domaine, sauf si l'API l'y autorise. C'est le rôle du CORS : j'indique à l'API quels sites ont le droit de lire ses réponses, et uniquement ceux-là.
Ce que j'en retire
Cette séparation demande un peu plus de mise en place qu'un site d'un seul bloc, mais elle paie vite. Chaque partie évolue à son rythme : j'enrichis les traitements Python sans toucher à l'interface, ou je refonds le design sans risquer de casser la logique. Et surtout, les données sensibles restent là où elles doivent être : côté serveur.