Schlagwort: Rest

Rest mit Spring Data JPA Projections

Die Entwicklung von Rest Schnittstellen mit Spring Boot wird durch viele Features des Frameworks begünstigt. Insbesondere durch die einfache Umsetzung der Rest Controller mit Hilfe einer Vielzahl von Annotationen und die Persistenz mit Spring Data JPA.

Während die Persistenzschicht mit ihren Repositories auf Entity Klassen arbeitet, werden vom Rest Controller DTOs verwenden. Entities und DTO arbeiten auf der Grundlagen identischer Domänenobjekte, unterscheiden sich aber zwangsläufig durch ihre sehr unterschiedliche Nutzung. So besitzen Entities häufig Attribute zur Speicherung des Änderungsdatums und eines eindeutigen Datenbankschlüssels.

Weiterlesen

Mit Jackson an der Antwort sparen

Eine REST API mit Spring Boot ist schnell einsatzbereit, aber im Einsatz produziert die Schnittstelle häufig eine Menge unnötiger Daten, die vom Server zurückgeliefert werden.

Weiterlesen

REST heißt HATEOAS

Häufig existieren REST Schnittstellen, die Resourcen im Json Formate zurückliefern, die keinerlei Verknüpfung zu anderen Resourcen besitzen. Schlimmer noch, sie offenbaren interne Werte, damit der Client die Möglichkeit hat, andere Resourcen zu adressieren oder zu manipulieren. Häufig ist es dies der Schlüssel der Resourcen in der Datenbank.

Weiterlesen

Hin und Her mit MapStruct

Ein neues privates Projekt nimmt langsam Formen an und die ersten Features sind auch schon skizziert. In der Fachdomäne sind einige der Objekte und Rollen identifiziert, u.a. Person, Mitarbeiter, Leitung, Vertretung, Einrichtung, Firma und Geschäftsführung. Notwendig ist eine Persistenzschicht und das Backend soll vom Frontend durch eine REST Schnittstelle getrennt sein. Da sich das Entwickler-Team gut mit Spring Boot auskennt, ist die Wahl der

Weiterlesen

API Dokumentation mit spring-boot-docs

Documentation is a love letter that you write to your future self. Damian Conway Es gibt die verschiedensten Arten die eigene Rest API zu dokumentieren, Tools wie Swagger können da helfen oder man schreibt selbst Markdown oder Asciidoc Dokumente. Wenn die Swagger Beschreibung nicht zur Generierung der API genutzt wird, dann kann man nie sicher sein, dass die Dokumentation auch wirklich die Realität beschreibt.

Weiterlesen

Geschmeidige Suche mit Elasticsearch

Vergrößert sich der Datenbestand in der eigenen Anwendung merklich, dann wird es Zeit über eine geeignete Suchlösung nachzudenken. Es gibt eine Menge frei verfügbarer Suchmaschinen, die den Vergleich mit kommerziellen Produkten nicht scheuen müssen. Viele zeigen sich in ihrem Funktionsumfang sogar viel leistungsfähiger. Suchmaschinen liefern sehr schnell Ergebnisse, weil sie nur auf ihrem Index, einem aufbereiteten Extrakt der eigentlichen Daten arbeiten und nicht die gesamte Datenbasis durchsuchen müssen.

Weiterlesen

Catch 304 – Der faule Trick

Beim Experimentieren mit der Spring Boot Rest-Schnittstelle fiel mir wieder einmal auf, dass ich beruflich nur wenige Rest-Services kennengelernt habe, die den HTTP Status Code 304 verwenden. Bei den Projekten, an denen ich teilgenommen habe, gab es tatsächlich nur eine einzige Rest-Schnittstelle, die von diesem Feature gebraucht machte. Der HTTP Status Code 303 NOT Modified zeigt an, dass sich die Resource auf dem Server

Weiterlesen

REST in Peace

Im vorläufig letzten Beitrag zum Thema Stammbäume geht es diesmal um die Generierung der grafischen Stammbäume mit Hilfe der REST-Schnittstelle, ein paar kleinen Verbesserungen unserer Sourcen und den Einsatz von HATEOAS in unserer Beispielanwendung. Bevor wir uns dem Thema HATEOAS zuwenden und damit der verbesserten Verlinkung unserer Resourcen mit Spring Boot Mitteln, bereinigen wir erst einmal ein paar Sünden in unserer Anwendung. Spring liefert

Weiterlesen

Stammbäume ins Netz mit GINA

Die Stammbäume entstanden auf meinem Notebook bislang recht primitiv als Produkt eines JUnit Test. @Test public void printMyTree() { FamilyPrinter3 printer = new FamilyPrinter3(); printer.setDebug(false); printer.setShowSiblings(false); printer.print(gedcom, ME, getWriter(ME)); } Das obige Beispiel erstellt meinen Stammbaum, ohne Darstellung von Geschwistern und ohne Hilfslinien zur Prüfung des Layouts. In der Konstanten ME ist mein vollständiger Name im GEDCOM Format als String hinterlegt. Es wäre aber

Weiterlesen