Déploiement
Déploiement • Chapitre 12 : Déploiement des applications full-stack

Configuration des URL de l'API

Ne codez jamais l'adresse de votre API en dur dans votre code client. Apprenez à basculer dynamiquement entre http://localhost:3000/api en développement et https://api.learnweb.com en production grâce aux variables d'environnement Angular, Vite ou Next.js.

🛑
Interdiction du Hardcode

Bannissez const API = 'http://localhost:3000' des fichiers TypeScript/JavaScript.

⚙️
environment.ts Angular

Remplacement automatique des fichiers de configuration lors de la compilation --configuration=production.

⚡
VITE_API_URL

Injection de variables préfixées par VITE_ lues au build par import.meta.env.

🔗
Chemins Relatifs /api

L'approche idéale en même serveur permettant de s'affranchir de toute URL absolue.

environment.production.ts
// 1. Fichier de développement : src/environments/environment.development.ts
export const environment = {
  production: false,
  apiUrl: 'http://localhost:3000/api/v1',
  enableDebugLogs: true
};

// 2. Fichier de production : src/environments/environment.ts (ou prod)
export const environment = {
  production: true,
  apiUrl: 'https://api.learnweb.com/api/v1',
  enableDebugLogs: false
};

// 3. Utilisation propre dans votre Service HTTP Angular :
import { inject, Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { environment } from '../../environments/environment';

@Injectable({ providedIn: 'root' })
export class ProductService {
  private http = inject(HttpClient);
  private baseUrl = environment.apiUrl;

  getProducts() {
    return this.http.get(`${this.baseUrl}/products`);
  }
}

Guide Approfondi & Architecture Système

1. Comment Fonctionne le File Replacement dans Angular CLI ?

Dans votre fichier angular.json :

Lorsque vous exécutez ng build --configuration=production, Angular remplace automatiquement le fichier environment.ts par environment.prod.ts avant de démarrer la minification.

Ainsi, le bundle JavaScript final téléversé sur votre hébergeur ne contient plus la moindre mention de localhost !

2. La Méthode des Chemins Relatifs (Idéale avec Nginx)

Si votre frontend et votre API partagent le même domaine :
Astuce de pro : Définissez simplement apiUrl: '/api/v1' (sans préfixe de domaine ni de protocole). Le navigateur ajoutera automatiquement le protocole et le domaine courant (ex: https://learnweb.com/api/v1). Votre code devient universel et fonctionne sans modification sur votre machine locale, en préproduction et en production !

Tableau Comparatif : Gestion des URLs d'API selon le Framework

Framework / OutilNom de la VariableComment la Lire dans le Code ?Quand est-elle Injectée ?
Angularenvironment.apiUrlimport { environment } from '...'À la compilation (File Replacement ng build)
Vite (React / Vue)VITE_API_URLimport.meta.env.VITE_API_URLÀ la compilation (remplacement textuel statique)
Next.js (Client Component)NEXT_PUBLIC_API_URLprocess.env.NEXT_PUBLIC_API_URLÀ la compilation et au rendu SSR
Create React App (Historique)REACT_APP_API_URLprocess.env.REACT_APP_API_URLÀ la compilation Webpack