Inhaltsverzeichnis

REST CONTROLLER

Lerne in 10 Minuten, wie du from scratch einen minimalen REST Service baust und erstelle dabei einen Spring Boot @RestController.

Screencast

REST Service mit Spring Boot in 10 Minuten

Der minimale REST Controller

Die zentralle Java Klasse eines REST Webservices in Spring Boot ist der sogenannte REST Controller. Er nimmt die HTTP Anfragen entgegen und verarbeitet sie.

Ein REST Controller ist

Die Methodenannotationen entsprechen dabei den HTTP-Anfragemethoden GET, POST, PUT und DELETE.

Ein minimaler REST Controller sieht wie folgt aus:

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

@RestController
class OkController {

  @GetMapping("/sayok")
  String sayok() {
    return "ok";
  }

}

Die obige @GetMapping Annotation bewirkt, dass bei einer HTTP Anfrage

GET /sayok HTTP/1.1

die Methode

String sayok() {
  return "ok";
}

ausgeführt wird und der Rückgabewert der Methode sayok() über die HTTP Antwort

HTTP/1.1 200
Content-Type: text/plain;charset=UTF-8
Content-Length: 2

ok

zurückgeliefert wird.

Die Zuordnung des HTTP GET Requests auf die mit @GetMapping annotierte Methode sayok() übernimmt das Spring Boot Framework. Du als Entwickler kannst dich vollständig auf die Implementierung der Methode sayok() konzentrieren 😉.

Maven Dependency

Damit du den obigen trivialen REST Service in Spring Boot ausprobieren kannst, benötigst du in deiner pom.xml folgende Dependency

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

wobei in deiner pom.xml natürlich spring-boot-starter-parent als Parent stehen muss.

curl und Postman

Wenn du jetzt die Spring Boot Anwendung startest und im Browser die URL http://localhost:8080/sayok aufrufst, dann erhältst du im Browser wie erwartet den String ok. In diesem Fall fungiert der Browser als REST Client.

Ein weiterer sehr nützlicher REST Client ist das Kommandozeilentool curl. Mit dem Befehl

curl http://localhost:8080/sayok

kannst du deinen Spring Boot Webservice aufrufen.

Mit curl kannst du auch die Kommunikation zwischen Client und Server mitverfolgen. Verwende einfach -v als zusätzlichen Parameter

curl -v localhost:8080/sayok
*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8080 (#0)
> GET /sayok HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200
< Content-Type: text/plain;charset=UTF-8
< Content-Length: 2
< Date: Thu, 19 Mar 2020 01:54:02 GMT
<
* Connection #0 to host localhost left intact
ok* Closing connection 0

dann siehst du mit

Möchtest du eine Anwendung als REST Client verwenden, dann ist Postman die erste Wahl. Sowohl curlals auch Postman sind sehr ausgereifte Produkte, die ich dir empfehlen möchte.

Weitere Schritte

Ich habe mit dem obigen trivialen REST Service lediglich die Oberfläche der REST Welt angekratzt. Mit Spring Boot kannst du natürlich professionelle REST Anwendungen und Microservices aufbauen. Weiterführende Themen aus diesem Bereich sind

und vieles mehr. Schöne Themen für weitere Tutorials …

Quellcode

Den kompletten Quellcode dieses Tutorials findest du in GitHub unter https://github.com/Trutz-Software-Consulting-GmbH/rest-controller.

Diskussion