Sobes.tech
Junior

Kāda ir atšķirība starp RestController un Controller?

sobes.tech AI

Atbilde no AI

@Controller tiek izmantots, lai apstrādātu tīmekļa pieprasījumus un atgrieztu skatu nosaukumus (.jsp, .html utt.). To bieži izmanto MVC arhitektūrā, kur tas ir atbildīgs par mijiedarbību ar datu modeli un skata izvēli.

@RestController ir specializēta @Controller versija. Tas automātiski pārveido metožu atgrieztās vērtības par HTTP atbildes formātu, parasti JSON vai XML. Tas notiek, pateicoties automātiskai @ResponseBody iekļaušanai katram kontroliera metodei. @RestController biežāk tiek izmantots RESTful tīmekļa pakalpojumu izveidei, kas nodrošina datus tīrā veidā, nevis atgriež HTML lapas.

Īpašība @Controller @RestController
Paskaidrojums Tīmekļa pieprasījumu apstrāde, skatu atgriešana RESTful tīmekļa pakalpojumu izveide, datu atgriešana (JSON, XML)
@ResponseBody Prasa skaidri lietot katrai metodei, kas atgriež datus Automātiski tiek piemērots visām metodēm
Atgrieztā veida Skata nosaukums (String), ModelAndView Dati (objekti, saraksti u.c.), automātiski serializēti

Piemērs:

@Controller:

// Piemērs ar @Controller
@Controller
@RequestMapping("/view")
public class ViewController {

    @GetMapping("/hello")
    public String sayHello() {
        return "hello"; // Atgriež skata nosaukumu (piemēram, hello.jsp)
    }
}

@RestController:

// Piemērs ar @RestController
@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/user")
    public User getUser() {
        // Pieņemot, ka ir User klase
        return new User("John Doe", 30); // Atgriež JSON reprezentāciju User objektam
    }
}