REST Service in 15 min mit Quarkus, OpenAPI, Swagger UI und JUnit-Test erstellen und um CO2-Ampel Service erweitern

Einen REST Service in 15 min mit Quarkus, OpenAPI, Swagger UI und JUnit-Test erstellen und um CO2-Ampel Service erweitern ist nicht kompliziert.

Freut euch immer

Vorraussetzungen Java 11 und Maven. Test mit:

mvn -version

auf der Kommandozeile:

Dann fangen wir in einem leeren Verzeichnis an

jetzt rufen wir mit dem Maven Quarkus Plugin das create Goal auf:

Zwei Sekunden später, ist das Projekt angelegt:

Nun gehen wir in das erzeugte Verzeichnis: cd info-kleinhirn

Nun starten wir den build und den Server mit:

mvn quarkus:dev

Ein paar Sekunden später ist alles gebaut, und der Server läuft:

Ein Aufruf von

http://localhost:8080/

bringt die statische Webseite. Und ein

http://localhost:8080/co2ampel

liefert den Aufruf des REST CO2Ampel Services.

Nun unterbrechen wir den Server mit CTLR-C und ergänzen für den Test die Swaggert GUI hinzu, einfach ein

und ein neues starten:

./mvnw compile quarkus:dev

Dann im Browser die GUI Aufrufen:

http://localhost:8080/swagger-ui/

Cool:

Und openapi geht auch, einfach in einem neuen Fenster ein

curl http://localhost:8080/openapi

So, jetzt nur noch echt CO2 Messung einbauen. Ich habe einen Mqtt-Broker der die Werte liefert.

Wir gehen in das Verzeichnis und /rest-co2ampel/info-kleinhirn/src/main/java/de/wenzlaff und holen uns die zwei Beispielklasse von github mit:

Dann gehen wir in das Wurzelverzeichnis des Projektes und fügen in der pom.xml diese beiden abhängigkeiten hinzu:

Dann müssen wir noch den JUnit Test anpassen.Dazu die Testklasse Co2AmpelResourceTest.java in der Methode testHelloEndpoint() diesen Inhalt einfügen:

So, nun können wir das Projekt starten:

./mvnw compile quarkus:dev

So der JUnit Test wurde erfolgreich ausgeführt. Nun kann der REST-Service über die URL

http://localhost:8080/v1/rest/co2

abgefragt werden. Wenn der Mqtt-Service Werte die entsprechenden Werte liefert, sonst 0 😉

Und auch über die openapi stehen die REST-Services bereit, cool …

Openapi geht auch:

Und hier, wenn der Mqtt-Server echte Werte liefert (evl. den Server localhost in der Java-Klasse MqttCo2Client durch einen anderen ersetzen, bei mir läuf der CO2-Sensor auf einem Raspberry Pi, wie hier im Blog beschrieben):

So, jetzt muss ich aber lüften …