• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Spring MVC - ResponseEntity

Object Storage Arubacloud
+1 głos
436 wizyt
pytanie zadane 14 sierpnia 2021 w Java przez DziQu Początkujący (420 p.)

Hej, od razu mówię że o ile w czystej Javie siedzę dosyć długo o tyle w springu dopiero raczkuje.

Mam pytanko, przerobiłem sobie kilka kursów jednak nurtuje mnie pewne pytanie, mam prosty kontroler:

@Controller
public class KnightController {
    KnightService knightService;

    public KnightController(KnightService knightService) {
        this.knightService = knightService;
    }

    @GetMapping("/knights")
    public String getAllKnights(Model model){
        List<Knight> allKnights = knightService.getAllKnights();
        model.addAttribute("knights", allKnights);
        return "knights";
    }

 

Chodzi mi dokładnie o adnotację @GetMapping, jeżeli teraz wejdę na localhost:8080/knights to wyświetli mi się plik thymeleaf i to jest zrozumiałe, ale spotkałem się też z takim czymś :

    @GetMapping("/knights")
    public ResponseEntity<?> getAllKnights(){
        return ResponseEntity.ok(knightService.getAllKnights());
    }

Rozumiem że to zwraca tylko i wyłącznie kody odpowiedzi (Np. jeżeli korzystamy z postmana) i nie ma możliwości w takiej metodzie z ResponseEntity przenieść nas na stronę thymeleaf (Z tego co wiem potrzebujemy zwrócić Stringa z nazwą pliku HTML) ?

Z góry dziękuję za odpowiedz.

1 odpowiedź

+1 głos
odpowiedź 14 sierpnia 2021 przez Wiciorny Ekspert (269,790 p.)
wybrane 14 sierpnia 2021 przez DziQu
 
Najlepsza

Hej, Zacznijmy od analizy tego fragmentu : 

responseEntity.ok(knightService.getAllKnights());

tutaj zwracany jest status do klienta, to co zwracasz zależy od tego "co aplikacja po stronie klienta oczekuje" :
Tutaj w APLIKACJI POSTMAN : otrzymasz status ( OK -> 200 jako kod HTTP ), natomiast body, ciało to jest zwrócenie wszystkich "rycerzy" i to otrzymasz jako RESPONSE_BODY z serwera, co będzie wyświetlone w postmanie dla przykładu z aplikacji której pisałem,  body może wyglądać tak dla np. produktu 

Takie zastosowanie jest kiedy PO STRONIE KLIENTA masz np serwer również postawiony, czy inne API-framerowk cały, więc logika tego co tam się dzieje jest w komponentach serwisu klienta
Np. korzystasz wtedy z Angulara, Reacta itd. gdzie tworzysz całe API w js po stronie serwera z node.js np. 

Tutaj wtedy po stronie klienta, np masz obsługę, że jeśli serwer zwróci właśnie zasób + status OK to wykona się takie i takie działanie, czy odebranie tego obiektu przesłanego w metodę responseEntity

Natomiast GetMapping to jest adnotacja, która dla danego zasobu ( URI,Endpoint) wywoływana jest dla metod GET, natomiast to wiesz. Więc dalej analizując fragment kodu  co do pierwszego: Generalnie tymianek tzn thymeleaf to tylko szablon styli - silnik, więc stosując go zwykle pracujesz tylko po stronie Javy( aplikacje nie tworzysz wtedy po stronie jakby klienta, a np z wykorzystaniem jsp,    albo właśnie wtedy SPRING MVC który korzysta z servletowego rozwiązania strony klienta 

  • org.springframework.web.servlet.View
  • org.springframework.web.servlet.ViewResolver

więc on oczekuje modelu i atrybutu, toteż to musisz konfigurować po stronie serwera Javy.
 

komentarz 14 sierpnia 2021 przez DziQu Początkujący (420 p.)
Dziękuję za konkretną odpowiedz ! :)
komentarz 14 sierpnia 2021 przez Wiciorny Ekspert (269,790 p.)
nie ma sprawy, w zakresie Springa/Javy polecam się i śmiało pytać nawet na prywatnej wiadomości

Podobne pytania

0 głosów
1 odpowiedź 511 wizyt
pytanie zadane 14 października 2021 w Java przez Tajniakkk Użytkownik (600 p.)
0 głosów
1 odpowiedź 306 wizyt
pytanie zadane 25 listopada 2019 w Java przez Piotrek1604 Użytkownik (560 p.)
0 głosów
0 odpowiedzi 200 wizyt
pytanie zadane 3 marca 2019 w Java przez must Bywalec (2,980 p.)

92,568 zapytań

141,420 odpowiedzi

319,622 komentarzy

61,954 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...