Einen aktuellen Quarkus REST-Service mit Swagger-UI kann in unter 10 Minuten auf dem Raspberry Pi 4 installiert werden. Das längste daran ist noch der erstmalig download. Vor 3 Jahren hatte ich das ja schon in 15 Minuten gemacht.
Also diese 7. Schritte sind auf der Kommandozeile nötig, um einen Aktuellen REST-Server mit Quarkus 3.5.3 zu starten:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
curl -Ls https://sh.jbang.dev | bash -s - trust add https://repo1.maven.org/maven2/io/quarkus/quarkus-cli/ curl -Ls https://sh.jbang.dev | bash -s - app install --fresh --force quarkus@quarkusio # Kommandfenster schließen und neue Session eröffnen quarkus create # in das Verzeichnis wechseln cd code-with-quarkus # Swagger und Openapi ergänzen quarkus ext add io.quarkus:quarkus-swagger-ui quarkus ext add io.quarkus:quarkus-smallrye-openapi # Server im dev Modus starten quarkus dev |
Schon können wir im Browser mit der URL http://localhost:8080/q/swagger-ui den Service aufrufen:
Oder auch von der Komandozeile:
1 |
curl -X 'GET' 'http://localhost:8080/hello' -H 'accept: text/plain' |
Ein wiederholtes starten, geht dann aber auch schon in 85 Sekunden:
Bonus: Git upload nach GitLabund Panache Integration
Dann kann das ganze auch nach GitLab übertragen werden, dazu auf GitLab ein leeres (ohne Readme) Repo anlegen und
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# im erzeugten Verzeichnis ein git init git add . git commit -m "Kommentar" # das GitLab Repo ergänzen, mit der https URL z.b git remote add origin https://gitlab.com/IT-Berater/twrestflug.git # oder wenn ein anderes gesetzt ist ein update git remote set-url origin https://gitlab.com/IT-Berater/twrestflug.git # dann übertragen mit git push -u origin master |
In diesem TWRestFlug Repo, gibt es dann auch noch ein leicht angepasste Version mit Panache. Es brauch dazu eigentlich nur die zwei Dateien, und in der pom.xml Panache ergänzen.
Das BE das mit @Entity annotiert und von PanacheEntity abgeleitet wird:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import io.quarkus.hibernate.orm.panache.PanacheEntity; import jakarta.persistence.Entity; @Entity public class Flugzeug extends PanacheEntity { private String name; private String kennung; public Flugzeug() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getKennung() { return kennung; } public void setKennung(String kennung) { this.kennung = kennung; } } Und eine Interface, das extends PanacheEntityResource erweitert: |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package de.wenzlaff.twflugzeuge; import org.eclipse.microprofile.openapi.annotations.OpenAPIDefinition; import org.eclipse.microprofile.openapi.annotations.info.Contact; import org.eclipse.microprofile.openapi.annotations.info.Info; import io.quarkus.hibernate.orm.rest.data.panache.PanacheEntityResource; import io.quarkus.rest.data.panache.ResourceProperties; /** * https://quarkus.io/guides/rest-data-panache */ @OpenAPIDefinition(info = @Info(title = "Flugzeug API", version = "1.0.0", description = "Flugzeug Client", contact = @Contact(url = "http://www.wenzlaff.info", name = "Thomas Wenzlaff", email = "info@wenzlaff.info"))) @ResourceProperties(path = "v1/flugzeug") public interface FlugzeugResource extends PanacheEntityResource<Flugzeug, Long> { } |
Schon hat man eine REST-CRUD Anwendung mit Panache mit speichern, löschen und anzeigen…