> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/german/funktionsblocke/blocks-reference/input-output/communication/rest-api-request.md).

# REST API - Request

Unified REST request block zum Aufrufen von Web‑APIs. Konfigurieren Sie `Method`, `Headers`, `Query Params` und `Payload`. Wählen Sie `Runtime Mode` Async (nicht blockierend) oder Sync (wartet auf Antwort). Optional kann ein Wert aus der JSON‑Antwort mittels eines Punkt-/Index‑Pfads extrahiert werden.

## 📥 Eingänge

`Enable`\
Optionales Boolean, das angibt, ob die Anfrage ausgeführt werden soll. Wenn False, überspringt der Block das Senden der Anfrage (Standard: True).

`Server Address`\
URL oder Endpoint, der aufgerufen werden soll (erforderlich).

`Headers`\
Optionale Header als Dictionary oder JSON‑String.

`Query Params`\
Optionale Query‑Parameter als Dictionary oder JSON‑String.

`Payload`\
Optionaler Request‑Body (wird entsprechend `Body Mode` versendet).

`Response Path`\
Optionaler Textpfad zum Extrahieren eines Werts aus der JSON‑Antwort (Beispiele: `data.items[0].id` oder `items[2]`).

(hier sind Sockets Eingänge)

## 📤 Ausgänge

`OK`\
Boolean, True wenn die HTTP‑Antwort Erfolg anzeigt.

`Status Code`\
Vom Server zurückgegebener HTTP‑Statuscode.

`Error`\
Fehlermeldung bei Netzwerk-/HTTP‑Fehlern oder Parsing‑Fehlern.

`Response Text`\
Rohantwortkörper als Text.

`Response JSON`\
Geparstes JSON‑Objekt, falls verfügbar (ansonsten None).

`Response Headers`\
Map der Antwort‑Header.

`Elapsed (ms)`\
Dauer der Anfrage in Millisekunden.

`Extracted Data`\
Wert, der aus `Response JSON` mittels `Response Path` aufgelöst wurde (oder None, wenn nicht gefunden).

(hier sind Sockets Ausgänge)

## 🕹️ Steuerungen

`Method`\
Wählen Sie die HTTP‑Methode: GET / POST / PUT / PATCH / DELETE.

`Body Mode`\
Legt fest, wie `Payload` gesendet wird: `json` / `form` / `raw`.

`Runtime Mode`\
Wählen Sie den Ausführungsmodus: `Async` (nicht blockierend, behält letztes Ergebnis) oder `Sync` (wartet auf Antwort).

`Timeout (s)`\
Timeout in Sekunden für Anfragen (ungültige Werte fallen auf einen sicheren Standard zurück).

`Verify SSL`\
Aktivieren/Deaktivieren der TLS‑Zertifikatsprüfung (nur in vertrauenswürdigen Testumgebungen deaktivieren).

## ⚙️ Funktionsweise

* Wenn `Enable` true ist, baut der Block die Anfrage aus `Server Address`, `Headers`, `Query Params` und `Payload` zusammen, sowie der gewählten `Method` und `Body Mode`.
* Im `Sync`‑Modus wartet der Block, bis die HTTP‑Anfrage abgeschlossen ist, und liefert das frische Ergebnis im gleichen Auswertungszyklus zurück.
* Im `Async`‑Modus sendet der Block die Anfrage ohne Blockieren; er behält das zuletzt abgeschlossene Ergebnis und aktualisiert die Ausgänge, sobald die Hintergrundanfrage fertig ist.
* Ein in `Response Path` angegebener JSON‑Extraktionspfad wird in `Extracted Data` aufgelöst, falls vorhanden; ein leerer Pfad führt zu keiner Extraktion.
* Bei HTTP‑ oder Netzwerkfehlern liefert der Block eine `Error`‑Meldung und markiert das Ergebnis als ungültig, damit Fehler leichter auffallen.

## 📝 Nutzung

1. Setzen Sie `Server Address` auf Ihren API‑Endpoint.
2. Geben Sie optional `Headers` und `Query Params` als Dictionaries oder JSON‑Strings an.
3. Legen Sie den Request‑Body in `Payload` ab und wählen Sie `Body Mode` (verwenden Sie `json` für strukturierte Payloads).
4. Wählen Sie `Runtime Mode`:
   * `Async`, um Ihr Szenario nicht zu blockieren (gut für UI/fortlaufende Pipelines).
   * `Sync`, wenn Sie die Antwort sofort im selben Durchlauf benötigen.
5. (Optional) Fügen Sie `Response Path` hinzu, um einen verschachtelten Wert aus der JSON‑Antwort für nachgelagerte Logik zu extrahieren.
6. Triggern Sie den Aufruf, indem Sie `Enable` auf True setzen oder einen Booleschen Trigger von anderen Blöcken zuführen.

## 💡 Tipps und Tricks

* Bereiten Sie JSON‑Payloads mit dem Block `Data to JSON` vor, bevor Sie sie in `Payload` einspeisen, für sauberere Struktur und weniger Formatierungsfehler.
* Verwenden Sie nach `Response JSON` den Block `Parse Data Dictionary`, um Antwortfelder sicher zuzugreifen und weiterzuleiten.
* Protokollieren Sie Antworten oder periodische Ergebnisse mit `CSV Export`, um eine zeitgestempelte Aufzeichnung der API‑Antworten zu behalten.
* Zum Debuggen verbinden Sie `Error` oder `Response Text` mit `Debug Input`, um unerwartete Ausgaben zu inspizieren.
* Kombinieren Sie den Block mit `Logic Input` oder `Rising Edge`, um genau zu steuern, wann Anfragen gesendet werden (z. B. nur einmal pro Ereignis).

(hier vorgeschlagene Blöcke stammen aus der bereitgestellten Liste)

## 🛠️ Fehlersuche

* `Server Address` leer oder ungültig: Stellen Sie sicher, dass `Server Address` eine vollständige URL ist (inkl. Protokoll, falls erforderlich).
* Anfrage läuft ins Timeout: Erhöhen Sie `Timeout (s)` oder prüfen Sie die Netzwerkverbindung zum Server.
* SSL‑Verifikationsfehler in Testumgebungen: Deaktivieren Sie `Verify SSL` nur vorübergehend, wenn Sie dem Ziel vertrauen.
* Unerwartetes JSON‑Parsing: Prüfen Sie zuerst `Response Text`; verwenden Sie eine JSON‑gültige Payload und setzen Sie `Body Mode` auf `json`, wenn Sie strukturierte Daten senden.
* Keine extrahierten Daten: Überprüfen Sie die Struktur durch Inspektion von `Response JSON` und passen Sie `Response Path` mit Punkt-/Indexnotation an (z. B. `items[0].id`).

## 🔒 Datenschutz & Sicherheit

Seien Sie vorsichtig mit sensiblen Daten in `Headers` oder `Payload` (API‑Keys, Passwörter). Beim Protokollieren oder Exportieren von Daten sollten vertrauliche Felder geschwärzt werden.

## 🧭 Beispiel‑Workflows

* Senden Sie periodisch Sensordaten an einen Webservice und protokollieren Sie Erfolgs-/Fehlerzähler mit `CSV Export`.
* Posten Sie ein strukturiertes JSON‑Objekt, erstellt mit `Data to JSON`, und verwenden Sie `Extracted Data` für eine Entscheidungs‑Logik (`Logic Input` / Schwellen).
* Nutzen Sie `Debug Input`, um Serverfehler während der Entwicklung zu inspizieren, bevor Sie auf Produktionslogging umstellen.
