- Verzeichnisstruktur unter /docs spiegelt nun die tatsächliche Projektstruktur wider - frontend/server-Trennung entfernt zugunsten von /docs/pages, /docs/redux, /docs/utils etc. - Erhöht Wiederauffindbarkeit, Übersichtlichkeit und Entwicklerfreundlichkeit
77 lines
1.6 KiB
Markdown
77 lines
1.6 KiB
Markdown
# 🌐 API Proxy – [...path].js
|
||
|
||
## Zweck
|
||
|
||
Diese Datei (`pages/api/[...path].js`) dient als **Catch-All Proxy**
|
||
für externe Webservice-Aufrufe über die Next.js API-Routing-Struktur.
|
||
|
||
Sie leitet alle Anfragen unter `/api/...` an einen Zielserver weiter.
|
||
|
||
---
|
||
|
||
## Technologie
|
||
|
||
Verwendet wird:
|
||
|
||
- [`http-proxy-middleware`](https://github.com/chimurai/http-proxy-middleware)
|
||
- Dynamische Zielauswahl basierend auf Umgebungsvariable `NEXT_PUBLIC_API_PORT_MODE`
|
||
|
||
---
|
||
|
||
## Ziel-URL-Konfiguration
|
||
|
||
```js
|
||
const mode = process.env.NEXT_PUBLIC_API_PORT_MODE;
|
||
|
||
const target =
|
||
mode === "dev"
|
||
? "http://localhost:80"
|
||
: "http://localhost"; // oder z. B. http://10.10.0.13
|
||
```
|
||
|
||
➡ Dadurch entfällt die feste Konfiguration über `NEXT_PUBLIC_SERVER_URL`.
|
||
|
||
---
|
||
|
||
## Beispiel: Weiterleitung
|
||
|
||
Request im Browser:
|
||
|
||
```
|
||
GET /api/talas5/ClientData/WebServiceMap.asmx/GisSystemStatic?idMap=12&idUser=484
|
||
```
|
||
|
||
→ wird weitergeleitet an:
|
||
|
||
```
|
||
http://localhost/talas5/ClientData/WebServiceMap.asmx/GisSystemStatic?idMap=12&idUser=484
|
||
```
|
||
|
||
---
|
||
|
||
## Verwendete Einstellungen
|
||
|
||
```js
|
||
export default createProxyMiddleware({
|
||
target,
|
||
changeOrigin: true,
|
||
pathRewrite: {
|
||
"^/api": "/", // entfernt /api aus dem Pfad
|
||
},
|
||
logLevel: "debug",
|
||
});
|
||
```
|
||
|
||
---
|
||
|
||
## Vorteile
|
||
|
||
| Punkt | Nutzen |
|
||
|---------------------------|------------------------------------------|
|
||
| Keine doppelte API-Konfiguration | ✅ `.env.local` bereinigt |
|
||
| Wiederverwendbar & flexibel | ✅ funktioniert lokal & auf Servern |
|
||
| Klar gekapselt in `[...path].js` | ✅ übersichtlich |
|
||
|
||
---
|
||
|
||
📄 Pfad: `/docs/server/pages/api/apiProxy.md` |