Skip to main content

Was ist der HTTP-Client?

Der HTTP-Client von Laravel ist eine bequeme API auf Basis von Guzzle. Über die Facade Http senden Sie kompakt HTTP-Anfragen an externe Webdienste und APIs.
Guzzle ist bereits vorinstalliert, sodass Sie ohne zusätzliche Konfiguration sofort loslegen können.

Grundlegende Anfragen

GET-Anfrage

Query-Parameter übergeben Sie als Array.

POST-Anfrage

Standardmäßig werden Daten als application/json gesendet.

PUT / PATCH / DELETE

Antworten verarbeiten

Methoden wie Http::get() liefern eine Instanz von Illuminate\Http\Client\Response. Diese bietet viele Möglichkeiten, die Antwort zu inspizieren.
Auf JSON-Werte können Sie auch per Array-Zugriff zugreifen.

Anfrage-Optionen

Header setzen

Um application/json als akzeptierten Content-Type anzugeben, ist acceptJson() praktisch.
Für CSRF-Header (X-CSRF-TOKEN / X-XSRF-TOKEN) bei AJAX-Anfragen aus dem Browser an Laravel-Endpunkte lesen Sie den Abschnitt CSRF-Schutz.

Authentifizierung

Bearer-Token (am gängigsten):
Basic Auth:

Basis-URL setzen

Wenn Sie viele Anfragen an denselben Host senden, bündeln Sie das mit baseUrl().

Formulardaten senden

Um Daten als application/x-www-form-urlencoded zu senden, verwenden Sie asForm().

Timeouts

Wird das Timeout überschritten, wird eine Illuminate\Http\Client\ConnectionException ausgelöst. Wir empfehlen, bei Aufrufen externer APIs immer ein Timeout zu setzen.

Retries

Für temporäre Netzwerkstörungen oder Serverfehler können Sie automatische Wiederholungen konfigurieren.
Bedingte Wiederholung (z. B. nur bei Verbindungsfehlern):

Fehlerbehandlung

Fehler manuell prüfen

Der HTTP-Client wirft standardmäßig keine Ausnahmen für 4xx-/5xx-Antworten. Nutzen Sie failed() oder clientError(), um solche Zustände abzufragen.

Ausnahmen auslösen

Mit throw() löst der Client bei Fehlerantworten eine Illuminate\Http\Client\RequestException aus.
throw() gibt die Antwort zurück und lässt sich verketten.
Fehler abfangen und behandeln:

Parallele Anfragen

Um mehrere APIs gleichzeitig anzusprechen, verwenden Sie pool().
Deutlich schneller als sequenzielle Aufrufe. Ideal für Dashboards, die mehrere externe APIs abrufen.

Tests

Mocking mit Http::fake()

In Tests simulieren Sie Antworten mit Http::fake(), ohne echte Anfragen zu senden.
Antworten pro URL definieren:
Antwort-Sequenzen (mehrfaches Aufrufen liefert unterschiedliche Antworten):

Anfragen verifizieren

Mit Http::assertSent() prüfen Sie den Inhalt gesendeter Anfragen.
Rufen Sie in Tests immer zuerst Http::fake() auf. Andernfalls landen Anfragen tatsächlich beim externen Dienst. Mit Http::preventStrayRequests() lassen Sie unmodifizierte Aufrufe eine Ausnahme auslösen.

Stray-Anfragen verhindern

Praxisbeispiel: Service-Klasse für einen externen API-Aufruf

In der Praxis ist es Best Practice, die Client-Logik in eine Service-Klasse zu kapseln.
1

Service-Klasse erstellen

2

Im Service Provider registrieren

3

Aus dem Controller nutzen

4

Tests schreiben

Zusammenfassung

  • Kapseln Sie die HTTP-Logik in einer Service-Klasse.
  • Setzen Sie immer ein Timeout (timeout() und connectTimeout()).
  • Konfigurieren Sie Wiederholungen für transiente Ausfälle (retry()).
  • Nutzen Sie in Tests konsequent Http::fake(), um externe APIs nicht wirklich anzusprechen.
  • Http::preventStrayRequests() im Testsetup schafft zusätzliche Sicherheit.
  • Legen Sie API-Tokens und Zugangsdaten in Umgebungsvariablen und in config/services.php ab.
Zuletzt geändert am 13. Juli 2026