Mis vahe on RestController ja Controller Springis?
sobes.tech AI
Vastus AI-lt
@Controller märgib klassi kui Spring MVC kontroller. See klass tagastab tavaliselt vaadete nimed (view names), mida seejärel töötlevad vaadelahendajad (view resolvers) kasutajaliidese kuvamiseks (näiteks HTML-lehed). @Controller kasutatakse sageli serveripoolse renderdusega veebirakenduste loomisel.
@RestController on spetsialiseeritud versioon @Controller-st. See lisab automaatselt iga meetodi juurde annotatsiooni @ResponseBody. See tähendab, et @RestController meetodid tagastavad vaikimisi andmeid (näiteks JSON või XML), mitte vaadete nimesid. @RestController sobib ideaalselt RESTful veebiteenuste loomiseks, mis pakuvad andmeid klientidele (näiteks front-end rakendustele või teistele teenustele).
Peamine erinevus:
@Controller: Tagastab vaadete nimed.@RestController: Tagastab andmeid (lisab automaatselt@ResponseBody).
Näide @Controller-st:
@Controller
public class ViewController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Hello, world!");
return "helloView"; // Tagastab vaate nime
}
}
Näide @RestController-st:
@RestController
public class DataController {
@GetMapping("/data")
public Map<String, String> getData() {
Map<String, String> response = new HashMap<>();
response.put("status", "success");
response.put("message", "Data retrieved");
return response; // Tagastab Map, mis teisendatakse JSON-ks
}
}