Dev : proxy /api paramétrable et arrêt propre du groupe de process
- run-dev.sh s'exécute dans sa propre session (setsid) et tue le GROUPE de process entier au cleanup : le backend (Kestrel) et ses enfants sont bien arrêtés, le port backend est réellement libéré à l'arrêt - Port backend paramétrable via BACKEND_PORT (défaut 8080), transmis à la fois au backend (dotnet --urls) et au proxy de dev du front - Nouveau frontend/proxy.conf.js : ng serve relaie /api vers http://localhost:${BACKEND_PORT} ; référencé dans angular.json (serve) - environment.ts (dev) : apiUrl passe à '/api' (same-origin via proxy), le port du backend n'est plus codé en dur dans le front - Prod inchangée (environment.prod.ts déjà en '/api', nginx)
This commit is contained in:
@@ -69,6 +69,9 @@
|
||||
},
|
||||
"serve": {
|
||||
"builder": "@angular/build:dev-server",
|
||||
"options": {
|
||||
"proxyConfig": "proxy.conf.js"
|
||||
},
|
||||
"configurations": {
|
||||
"production": {
|
||||
"buildTarget": "schotziad-km-tracker:build:production"
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
// Proxy de développement pour `ng serve` : les appels du front vers `/api` sont
|
||||
// relayés vers le backend. Le port du backend n'est PLUS codé en dur dans le
|
||||
// front : il est lu depuis la variable d'environnement BACKEND_PORT (défaut 8080),
|
||||
// ce qui permet à run-dev.sh de piloter un seul port côté backend ET côté proxy.
|
||||
//
|
||||
// En production, c'est nginx qui proxifie /api (ce fichier ne sert qu'en dev).
|
||||
|
||||
const backendPort = process.env.BACKEND_PORT || '8080';
|
||||
|
||||
module.exports = {
|
||||
'/api': {
|
||||
target: `http://localhost:${backendPort}`,
|
||||
secure: false,
|
||||
changeOrigin: true
|
||||
}
|
||||
};
|
||||
@@ -17,8 +17,8 @@ import {
|
||||
/**
|
||||
* Service HTTP des trajets, résumés, exports PDF et navigation temporelle.
|
||||
*
|
||||
* Toutes les routes sont relatives à `environment.apiUrl` (`/api` en prod,
|
||||
* `http://localhost:8080/api` en dev). Les appels sont soumis au
|
||||
* Toutes les routes sont relatives à `environment.apiUrl` (`/api`, en dev comme
|
||||
* en prod ; en dev, le proxy `ng serve` relaie `/api` vers le backend). Les appels sont soumis au
|
||||
* `timeoutInterceptor` (10 s, Exigence 1.9).
|
||||
*/
|
||||
@Injectable({ providedIn: 'root' })
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
// Environnement de développement.
|
||||
// En dev, le frontend Angular tourne sur son propre serveur (ng serve, port 4200)
|
||||
// et adresse directement le backend ASP.NET Core.
|
||||
// En dev, le frontend Angular tourne sur son propre serveur (ng serve, port 4200).
|
||||
// Les appels à `/api` sont relayés vers le backend par le proxy de dev (proxy.conf.js,
|
||||
// cible `serve` dans angular.json), dont le port est paramétrable via BACKEND_PORT.
|
||||
// L'API est donc consommée en same-origin via le chemin relatif `/api`, comme en prod :
|
||||
// le port du backend n'est plus codé en dur dans le front.
|
||||
export const environment = {
|
||||
production: false,
|
||||
// URL de base de l'API backend en développement.
|
||||
// Le backend écoute par défaut sur http://localhost:8080 (cf. Docker / Program.cs).
|
||||
apiUrl: 'http://localhost:8080/api',
|
||||
// Chemin relatif : le proxy de dev (proxy.conf.js) relaie /api vers le backend.
|
||||
apiUrl: '/api',
|
||||
// Timeout HTTP appliqué par le TimeoutInterceptor (Exigence 1.9 : 10 secondes).
|
||||
httpTimeoutMs: 10000,
|
||||
// API Base Adresse Nationale (autocomplétion adresses françaises).
|
||||
|
||||
Reference in New Issue
Block a user