Was ist der Unterschied zwischen RestController und Controller?
sobes.tech KI
Antwort von AI
@Controller wird verwendet, um Web-Anfragen zu verarbeiten, und gibt die Namen der Ansichten (.jsp, .html usw.) zurück. Es wird häufig in der MVC-Architektur verwendet, wo es für die Interaktion mit dem Datenmodell und die Auswahl der Anzeigeansicht verantwortlich ist.
@RestController ist eine spezialisierte Version von @Controller. Es wandelt die von den Methoden zurückgegebenen Werte automatisch in das HTTP-Antwortformat um, meist in JSON oder XML. Dies wird durch die automatische Einbindung von @ResponseBody in jede Methode innerhalb des Controllers erreicht. @RestController wird häufiger für die Erstellung von RESTful-Webdiensten verwendet, die Daten in Rohform bereitstellen, anstatt HTML-Seiten zurückzugeben.
| Merkmal | @Controller |
@RestController |
|---|---|---|
| Zweck | Verarbeitung von Web-Anfragen, Rückgabe von Ansichten | Erstellung von RESTful-Webdiensten, Rückgabe von Daten (JSON, XML) |
@ResponseBody |
Erfordert explizite Verwendung bei jeder Methode, die Daten zurückgibt | Wird automatisch auf alle Methoden angewendet |
| Rückgabetyp | Name der Ansicht (String), ModelAndView | Daten (Objekte, Listen usw.), automatisch serialisiert |
Beispiel:
@Controller:
// Beispiel für die Verwendung von @Controller
@Controller
@RequestMapping("/view")
public class ViewController {
@GetMapping("/hello")
public String sayHello() {
return "hello"; // Gibt den Namen der Ansicht zurück (z.B. hello.jsp)
}
}
@RestController:
// Beispiel für die Verwendung von @RestController
@RestController
@RequestMapping("/api")
public class ApiController {
@GetMapping("/user")
public User getUser() {
// Angenommen, es gibt eine Klasse User
return new User("John Doe", 30); // Gibt die JSON-Darstellung des User-Objekts zurück
}
}