docs: Projektstruktur der Dokumentation an Quellcode angepasst
- 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
This commit is contained in:
67
docs/pages/api.md
Normal file
67
docs/pages/api.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# 📘 API-Routen in `/pages/api/`
|
||||
|
||||
Dieses Dokument beschreibt die internen API-Routen der Anwendung (Next.js API Routes) und erklärt die verwendeten URL-Parameter sowie Konventionen bei der Nutzung im Backend.
|
||||
|
||||
---
|
||||
|
||||
## 🔗 Übergabeparameter aus TALAS.web
|
||||
|
||||
Beim Aufruf der Anwendung über TALAS.web werden die folgenden URL-Parameter übergeben:
|
||||
|
||||
| Parameter | Bedeutung | Verwendung im Code |
|
||||
|-----------|------------------|---------------------------|
|
||||
| `m` | Map-ID (`idMap`) | `req.query.m` |
|
||||
| `u` | User-ID (`idUser`)| `req.query.u` |
|
||||
|
||||
> ⚠️ Es wird bewusst **nicht** `idMap` oder `idUser` verwendet, da TALAS mit Kurzparametern arbeitet.
|
||||
|
||||
### Beispiel:
|
||||
|
||||
```ts
|
||||
const idMap = req.query.m;
|
||||
const idUser = req.query.u;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🛠 Zweck des Verzeichnisses `/pages/api/`
|
||||
|
||||
Alle Dateien in diesem Verzeichnis definieren serverseitige Endpunkte. Diese:
|
||||
|
||||
- werden **nur auf dem Server ausgeführt**
|
||||
- sind über `fetch('/api/...')` vom Frontend aufrufbar
|
||||
- dienen als **Proxy zu SOAP-Webservices** oder **Zugriff auf die Datenbank**
|
||||
|
||||
---
|
||||
|
||||
## 📁 Beispiel: Aufruf eines Webservice
|
||||
|
||||
```bash
|
||||
GET /api/gisSystemStatic?m=10&u=484
|
||||
```
|
||||
|
||||
Dieser Request wird serverseitig weitergeleitet an:
|
||||
|
||||
```
|
||||
http://[SERVER]/talas5/ClientData/WebServiceMap.asmx/GisSystemStatic?idMap=10&idUser=484
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📄 Übersicht interner API-Routen
|
||||
|
||||
| API-Route | Beschreibung |
|
||||
|----------------------------------|------------------------------------------|
|
||||
| `/api/gisSystemStatic` | Proxy zu WebService GisSystemStatic |
|
||||
| `/api/gisStationsStaticDistrict` | Geräte-Liste inkl. Bereich |
|
||||
| `/api/gisStationsMeasurements` | Live-Messwerte der Geräte |
|
||||
| `/api/talas_v5_DB/pois/readLocations` | POIs aus der Datenbank (MySQL) |
|
||||
| `/api/talas_v5_DB/device/getAllStationsNames` | Gerätnamen aus DB |
|
||||
|
||||
---
|
||||
|
||||
## 🔐 Sicherheitshinweis
|
||||
|
||||
- Kein sensibler Parameter darf hart codiert sein
|
||||
- Alle Server-URLs werden über `.env.local` konfiguriert
|
||||
- Nur `m` und `u` aus `req.query` verwenden – keine Fallbacks oder Defaults
|
||||
77
docs/pages/api/apiProxy.md
Normal file
77
docs/pages/api/apiProxy.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# 🌐 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`
|
||||
Reference in New Issue
Block a user