Spring REST Controller » Historie » Revize 5
Revize 4 (Jiří Trefil, 2023-03-15 22:04) → Revize 5/10 (Jiří Trefil, 2023-03-15 22:06)
h1. Spring REST Controller * 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. * 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). h2. Příklad REST controlleru (TODO REPLACE template controlleru, až bude nějaký ustálený) <pre><code class="java"> // anotace RestController - říká, že třída DummyController je REST controllerem @RestController public class DummyController { // RequestMapping - velice prostá anotace, která říká, že HTTP request je mapován na konkrétní metodu // V tomto případě je HTTP request na localhost/v2/helloworld mapován na tento controller a na metodu HelloWorld // value - konkrétní path, na které je tato metoda pověšena // produce - co controller vrací (Content-type v headeru response objektu), tady slibujeme, že vracíme JSON // method - na jaký typ requestu posloucháme, v tomto případě GET @RequestMapping(value = "/v2/helloworld", produces="application/json", method = RequestMethod.GET) public String helloWorld(@RequestParam(value = "parameter", defaultValue=" World") String parameter){ // zde samotný kód, který zpracuje request // je maximálně vhodné z controlleru volat nějakou service, která reprezentuje logiku aplikace a nevykonávat zde nic těžkého // tedy zde jenom přijmu request, předám ho service, od service dostanu výsledek a odpovím return "{\"message\":\"Hello "+parameter+"\"}"; } //zde pouze změna v method // method - POST - touto metodou budeme odpovídat na requesty typu POST. Zbytek platí stejně jako u metody výše. @RequestMapping(value = "/v2/helloworld", produces="application/json", method = RequestMethod.POST) public String goodbyeWorld(@RequestParam(value = "parameter", defaultValue=" World") String parameter){ // zde samotný kód, který zpracuje request // tedy zde jenom přijmu request, předám ho service, od service dostanu výsledek a odpovím return "{\"message\":\"Bye "+parameter+"\"}"; } } </code></pre>