Spring Boot 2: /health Endpoint überschreiben

Im Grunde geht’s sogar um zwei Themen, die beide relativ unklar sind, wenn man sich die Einträge auf Stack Overflow ansieht:

  1. wie pretty-printe ich den (JSON-)Output eines Spring-Endpoints
  2. wie überschreibe ich Default-Endpoints (denn das kann eine Lösung für 1. sein)

Bspw. hier, hier, hier, hier. Es gibt dort einige Lösungsvorschläge, mehr oder weniger aufwändig, viele für Spring Boot 1.x – hier eine weitere (für Spring Boot 2), imho sehr elegante (mit viel Input von Nils!):

Dann wird /health auf /internal/health (oder irgendwas) umgeleitet, und danach /prettyhealth auf /health:

et voilà.

Twitter für WordPress

Es gibt viele Plugins für WordPress, um seine Tweets anzuzeigen.

Das Problem von fast allen: Sie rufen serverseitig ab, und zwar dynamisch. Ein Problem ist das deshalb, weil Twitter die Anfragen auf 150/Stunde/IP beschränkt. Wenn man, wie ich, keinen dedizierten Server mit eigener IP hat, dann sind die 150 Requests schnell aufgebraucht. Sehr schnell. Ich habe gerade (unter der Woche, gegen 23 Uhr) etwa 7 Minuten gebraucht. Wenn das Plugin nun serverseitig die Nachrichten abruft, dann kommen also keine Ergebnisse – und darüber hinaus hängt die Seite schlimmstenfalls, weil das PHP-Skript auf Twitter wartet.

Eine schlechte Eigenschaft von vielen Plugins darüber hinaus: Sie zeigen keine Retweets an.

Mindestens das folgende Plugin umgeht die oben beschriebenen Probleme: Tweet Blender. Erstens zeigt es auch Retweets an. Dann legt es einen Cache an, und verwendet diesen, statt jedes mal Twitter anzupingen. Dieser Cache wird nach dem Laden der Seite per Javascript geholt; die Seite hängt also nicht.

Außerdem zeigt es den aktuellen Serverstatus in Bezug auf verbleibende Requests an (siehe Bild; das hat mich überhaupt erst auf das Thema gebracht); auf Wunsch auch als Nachricht für den Nutzer. Es unterstützt übrigens auch mehrere Accounts (was mir persönlich schnurz war).

Das Ergebnis seht ihr rechts; morgen (oder so) werde ich das mal ein wenig skinnen.