Kategorie: Web

Service Limitierung mit Bucket4J

REST Services können nur eine gewisse Anzahl von Anfragen innerhalb eines Zeit Fensters verarbeiten. Werden zu viele Anfragen gestellt, dann gerät der Service unter Last und reagiert sehr langsam oder gar nicht mehr. Zusätzliche Anfragen, die ein vorgegebenes Limit übersteigen, sollten daher vom Service abgelehnt werden.

Weiterlesen

Affordance: Was kann ich mit der REST Resource anstellen?

Bei der Verwendung von REST Schnittstellen beginnt die Evolution eigener APIs mit der Erstellung einiger HTTP Endpunkte die Informationen im JSON Format austauschen. Die nächste Stufe ist die Abkehr von der Denkweise in Aktionen hin zum Verständnis, dass über REST Resourcen addressiert und manipuliert werden.

Weiterlesen
Bild von Kerstin Riemer https://pixabay.com/de/users/kriemer-932379/

Optimistic Locking mit dem ETag Header

Wenn mehr als ein Beteiligter beim Speichern von Daten involviert ist, kann es zu ungewollten Überschreibungen kommen. Um solche Probleme zu umgehen, existieren drei Vorgehensweisen. Pessimistic Locking, Optimistic Locking und Ignore It!

Weiterlesen

Mehrsprachige Rest Endpoints

Hin und wieder schleichen sich I18N Anforderungen in die eigenen Anwendungen ein, die als einsprachige Anwendung gestartet wurde. Der offensichtlichste Fall für solch eine Mehrsprachigkeit ist z.B. eine Serviceseite im Kita Bereich. Da häufig Kinder verschiedenster Nationalitäten eine Kita besuchen, sind Informationen in der Muttersprache der Eltern hilfreich.

Weiterlesen

Caching und Spring Data JPA

Im Zuge der Implementierung einer Restschnitstelle für die Verwaltung von Ahnenfoschungsvereinen kam die Frage auf, ob man die Datenbankabfragen nicht cachen könnte. Da der Bestand an solchen Vereinen sich selten verändert, liefert dieser Mikroservice fast immer identische Ergebnisse.

Weiterlesen

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

Frontend Validierung mit Spring Boot (Teil 2)

Wenn die Wertebereiche der Eingaben im Frontend geprüft werden ist es gut, wenn die Wertebereiche von Frontend und Backend übereinstimmen ist es schön. Elegant wird es, wenn Frontend und Backend ihre Wertebereiche aus der gleichen Quelle erhalten.

Weiterlesen

Front End Validierung mit Spring Boot

Leider zeigt sich hier ein kleines Manko dieses Ansatzes. Die Entitäten für Spring Data müssen annotiert werden, die DTO müssen annotiert werden und das Javascript Framework muss auch die Wertebereiche der Eingabe kennen. Drei verschiedene Konfigurationen konsistent zu halten ist arbeitsintensiv und fehleranfällig.

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