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
}
}