REST-Service mittels Spring Boot aufsetzen

Sprint Boot vereinfacht das Setup eines Spring-Projektes und geht dabei nach der Methode Konvention vor Konfiguration vor. So lässt sich ein einfacher REST-Service mittels Spring Boot schnell und unkompliziert implementieren. Im ersten Schritt wird dazu mit dem Spring Initializr ein neues Projekt mit der Abhängigkeit Web angelegt.

Mit dem Spring Initializr wird ein Projekt mit der Abhängigkeit Web angelegt.

Nach dem Download des Projektes wird dieses in der IDE der Wahl (z.B. IntelliJ IDEA) geöffnet und eine Klasse mit dem Namen HelloWorldController angelegt. Die Klasse sollte im gleichen Package (in diesem Beispiel: com.example.demo) wie die DemoApplication angelegt werden und wie folgt aussehen:

package com.example.demo;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {

    @GetMapping("/hello")
    public String helloWorld(@RequestParam final String name) {
        return "Hello " + name + "!";
    }

    @GetMapping("/hello/{name}")
    public String helloWorld2(@PathVariable("name") final String name) {
        return "Hello " + name + "!";
    }
}

Über die Annotation @RestController wird dem Framework mitgeteilt das es sich bei dieser Klasse um einen Controller für die REST-API handelt. Anschließend wird die Ressource hello definiert. Diese kann über zwei Wege aufgerufen werden:

http://localhost:8080/hello?name=seeseekey
http://localhost:8080/hello/seeseekey

Bei beiden Aufrufen erscheint als Ergebnis der Text:

Hello seeseekey!

Der erste Aufruf wird auf die Methode helloWorld gemappt, während der zweite Aufruf mit dem Parameter in der URL an die Methode helloWorld2 gemappt wird. Mittels der Annotation @GetMapping wird der URL-Pfad festgelegt, auf welchen die Methode reagieren soll. Bei der ersten Methode kommt die Annotation @RequestParam zum Einsatz, welche einen gewöhnlich Parameter definiert, welcher von der eigentlichen URL abgetrennt ist. Dagegen wird mit der Annotation @PathVariable in der Methode helloWorld2 eine Variable im Pfad der eigentlichen URL definiert.

Feinstaub selber messen

Feinstaub wirkt in den Medien im Moment wie die ultimative Geißel des Menschheit. Problematisch an Feinstaub ist dass dieser nicht sichtbar ist und entsprechend tief in die Lunge vordringt. Da wäre es natürlich interessant zu erfahren, wie viel Feinstaub sich vor der eigenen Wohnung oder dem eigenen Haus befindet. Um dies zu messen wird ein entsprechendes Messgerät benötigt. Mit dem Bau eines solchen Messgerätes beschäftigt sich die Webseite luftdaten.info.

luftdaten.info

Neben einer Bauanleitung findet sich auf der Webseite weitere Informationen rund um das Projekt, z.B. um auf die API zur Abfrage der Daten zuzugreifen. Betrieben wird das Projekt vom OK Lab Stuttgart, welches zur Code for Germany Initiative gehört. Die Daten des fertigen Sensors können an luftdaten.info übertragen werden oder nur lokal genutzt werden. Quelltexte der verwendeten Soft- und Firmware sind auf GitHub zu finden. Lizenziert ist die Software unter der GPL in Version 3 und somit freie Software.

Offene Gesetze

Nachdem Gesetze in Deutschland verabschiedet wurden, werden sie im Bundesgesetzblatt veröffentlicht und dadurch verbindlich. Geregelt wird dies im Artikel 82 des Grundgesetzes. Dort heißt es:

Die nach den Vorschriften dieses Grundgesetzes zustande gekommenen Gesetze werden vom Bundespräsidenten nach Gegenzeichnung ausgefertigt und im Bundesgesetzblatte verkündet. Rechtsverordnungen werden von der Stelle, die sie erläßt, ausgefertigt und vorbehaltlich anderweitiger gesetzlicher Regelung im Bundesgesetzblatte verkündet.

Problematisch daran ist dass der Bundesanzeiger-Verlag, welcher für die Veröffentlichung zuständig ist, seit 2006 privatisiert wurde. Mittlerweile ist der Verlag im Besitz der Dumont-Mediengruppe. Für ein entsprechendes Abo, ist es möglich auf die Bestände der Bundesgesetzblätter zuzugreifen. Eigentlich ein Unding, bei Gesetzten an die sich die Bevölkerung halten soll. Die Bundesgesetzblätter sind als amtliche Drucksachen nicht schützenswert. Stattdessen wird seitens des Verlages mit dem Datenbankschutz argumentiert. Da die Dokumente zu einer Datenbank zusammengefasst wurden; ist dies ein Werk, welches wieder Schutzrechte genießen soll.

Das Portal Offene Gesetze

Alles in allem eine fragwürdige Konstruktion, mit der das Portal Offene Gesetze, zu finden unter offenegesetze.de aufräumen will. Dort findet man sämtliche Bundesgesetzblätter seit 1949. Die Bundesgesetzblätter können durchsucht, gedruckt oder als Ganzes heruntergeladen werden. Daneben wird eine API bereitgestellt, mit welcher ebenfalls auf die Dokumente zugegriffen werden kann. Zu Beachten ist dass die Bundesgesetzblätter keine vollständigen Gesetze (außer bei der erstmaligen Veröffentlichung des Gesetztes), sondern die jeweiligen Änderungen enthalten.

Betrieben wird das Portal von der Open Knowledge Foundation Deutschland. Dabei handelt es sich um einen offiziellen Chapter der Open Knowledge Foundation. Die verwendete Software ist auf GitHub zu finden, unter der MIT-Lizenz lizenziert und damit freie Software.

Header in Postman von Tab zu Tab übernehmen

Mit der App Postman ist es möglich REST-API Aufrufe gegen beliebige Endpunkte durchzuführen. Wenn man nun bei einem Reponse auf einen Link klickt, so öffnet sich innerhalb von Postman ein neuer Tab mit dem Link als URL. Leider werden die Header des aktuellen Tabs dabei nicht übernommen. Wenn man sich innerhalb einer API bewegt, kann dieses Verhalten von Postman ziemlich anstrengend sein, da die Header dann immer wieder von Tab zu Tab kopiert werden müssen.

Die Einstellungen von Postman

Abhilfe schaffen hier die Einstellungen von Postman. In diesen befindet sich im Tab General der Punkt Retain headers when clicking on links. Sobald diese Einstellung aktiviert ist, werden bei einem neuen Tab, welcher durch einen Klick auf einen Link entsteht, automatisch die Header vom alten Tab in den neuen Tab übertragen.

Google Fonts herunterladen

Im Rahmen der DSGVO wird unter anderen Datensparsamkeit gefordert; bei vielen Webseiten ist dies leider nicht immer gegeben. So findet häufig die Einbindung der Google Fonts vor. Jetzt ist es per se nicht verwerflich Google Fonts zu nutzen, allerdings sollten diese Fonts lokal eingebunden werden. Wenn dies nicht geschieht und sie direkt über das CDN von Google eingebunden werden, überträgt man bei jedem Aufruf entsprechende Daten an Google.

fonts.google.com

Um dies zu unterbinden, sollte die gewünschte Schriftart heruntergeladen werden und anschließend lokal in die eigene Webseite bzw. das eigene Projekt eingebunden werden. Hierfür bietet sich der google-webfonts-helper von Mario Ranftl an. Dort wählt man die gewünschte Schriftart aus und kann diese anschließend herunterladen. Neben dem eigentlichen Font wird auch entsprechendes CSS zu Einbindung bereitgestellt. Genutzt werden kann der google-webfonts-helper nicht nur über die Weboberfläche, sondern auch über eine entsprechende REST-API.

Der google-webfonts-helper

Der Quelltext des google-webfonts-helper kann über GitHub bezogen werden. Lizenziert ist das Projekt unter der MIT Lizenz und damit freie Software.