Projekt

Obecné

Profil

Spring REST Controller » Historie » Verze 5

Jiří Trefil, 2023-03-15 22:06

1 1 Jiří Trefil
h1. Spring REST Controller
2 2 Jiří Trefil
3
* Controller řídí logiku toku informací aplikace s MVC architekturou, tedy řídí, jak uživatel s aplikací komunikuje. Rozhoduje, jaký response odeslat na konkrétní uživatelský request.
4
* Spring aplikace v kontextu SPADe v2 je pouze RESTové API, všechny controllery jsou tedy anotovány pomocí @RestController. Tato anotace implikuje, že třída je REST controller (správná konvence).
5 3 Jiří Trefil
6 5 Jiří Trefil
h2. Příklad REST controlleru (TODO REPLACE template controlleru, až bude nějaký ustálený)
7 3 Jiří Trefil
8
9 1 Jiří Trefil
<pre><code class="java">
10 4 Jiří Trefil
 
11
// anotace RestController - říká, že třída DummyController je REST controllerem
12
@RestController
13 3 Jiří Trefil
public class DummyController {
14 4 Jiří Trefil
    // RequestMapping - velice prostá anotace, která říká, že HTTP request je mapován na konkrétní metodu
15
    // V tomto případě je HTTP request na localhost/v2/helloworld mapován na tento controller a na metodu HelloWorld
16
    // value - konkrétní path, na které je tato metoda pověšena
17
    // produce - co controller vrací (Content-type v headeru response objektu), tady slibujeme, že vracíme JSON
18
    // method - na jaký typ requestu posloucháme, v tomto případě GET
19
    @RequestMapping(value = "/v2/helloworld", produces="application/json", method = RequestMethod.GET)
20 1 Jiří Trefil
    public String helloWorld(@RequestParam(value = "parameter", defaultValue=" World") String parameter){
21 4 Jiří Trefil
        // zde samotný kód, který zpracuje request
22
        // je maximálně vhodné z controlleru volat nějakou service, která reprezentuje logiku aplikace a nevykonávat zde nic těžkého
23
        // tedy zde jenom přijmu request, předám ho service, od service dostanu výsledek a odpovím
24 1 Jiří Trefil
        return "{\"message\":\"Hello "+parameter+"\"}";
25 4 Jiří Trefil
    }
26
    //zde pouze změna v method
27
    // method - POST - touto metodou budeme odpovídat na requesty typu POST. Zbytek platí stejně jako u metody výše.
28
    @RequestMapping(value = "/v2/helloworld", produces="application/json", method = RequestMethod.POST)
29
    public String goodbyeWorld(@RequestParam(value = "parameter", defaultValue=" World") String parameter){
30
        // zde samotný kód, který zpracuje request
31
        // tedy zde jenom přijmu request, předám ho service, od service dostanu výsledek a odpovím
32
        return "{\"message\":\"Bye "+parameter+"\"}";
33 3 Jiří Trefil
    }
34
35 2 Jiří Trefil
}
36 1 Jiří Trefil
</code></pre>