# ADR-002 Use WebClient

# Status

accepted

# Context

Für die Maschine-zu-Maschine-Kommunikation wird ein WebClient benötigt, der die HTTP-Zugriffe kapselt. Die Verwendung verschiedener WebClients erschwert die Konfiguration und Übertragbarkeit der Software und sollte daher vermieden werden. Spring Boot bringt einen WebClient (reaktiv oder auch nicht) mit, es existieren aber auch weitere WebClients (okhttp, apache, feign).

# Decision

Anstatt eine konkrete Implementierung eines WebClients zu verwenden, verwenden wir das deklarative WebClient-Framework OpenFeign (opens new window). Bei der Verwendung innerhalb von Spring Boot nutzen wir den entsprechenden SpringCloud Feign Starter (opens new window). Wenn eine OpenAPI-Spezifikation einer Schnittstelle vorliegt, sollte der feign Client mithilfe von openapi-generator generiert werden.

# Consequences

Durch die Verwendung einer weiteren Abstraktion müssen die Einstellungen nicht in der Low-Level-Implementierung des WebClients, sondern auf der Feign-Ebene vorgenommen werden.