Sobes.tech
Junior

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