Sobes.tech
Junior

Ποια είναι η διαφορά μεταξύ RestController και Controller;

sobes.tech AI

Απάντηση από AI

Το @Controller χρησιμοποιείται για την επεξεργασία αιτημάτων ιστού και επιστρέφει τα ονόματα των προβολών (.jsp, .html κ.λπ.). Συχνά χρησιμοποιείται στην αρχιτεκτονική MVC, όπου είναι υπεύθυνο για την αλληλεπίδραση με το μοντέλο δεδομένων και την επιλογή της προβολής για εμφάνιση.

Το @RestController είναι μια εξειδικευμένη έκδοση του @Controller. Μετατρέπει αυτόματα τις τιμές που επιστρέφουν οι μέθοδοι σε μορφή απάντησης HTTP, συνήθως σε JSON ή XML. Αυτό επιτυγχάνεται μέσω της αυτόματης ενσωμάτωσης του @ResponseBody σε κάθε μέθοδο εντός του ελεγκτή. Το @RestController χρησιμοποιείται συχνότερα για τη δημιουργία RESTful web services που παρέχουν δεδομένα σε ακατέργαστη μορφή, αντί να επιστρέφουν σελίδες HTML.

Χαρακτηριστικό @Controller @RestController
Σκοπός Επεξεργασία αιτημάτων ιστού, επιστροφή προβολών Δημιουργία RESTful web services, επιστροφή δεδομένων (JSON, XML)
@ResponseBody Απαιτείται ρητή χρήση σε κάθε μέθοδο που επιστρέφει δεδομένα Εφαρμόζεται αυτόματα σε όλες τις μεθόδους
Τύπος επιστροφής Όνομα προβολής (String), ModelAndView Δεδομένα (αντικείμενα, λίστες κ.λπ.), αυτομάτως σειριοποιούνται

Παράδειγμα:

@Controller:

// Παράδειγμα χρήσης του @Controller
@Controller
@RequestMapping("/view")
public class ViewController {

    @GetMapping("/hello")
    public String sayHello() {
        return "hello"; // Επιστρέφει το όνομα της προβολής (π.χ., hello.jsp)
    }
}

@RestController:

// Παράδειγμα χρήσης του @RestController
@RestController
@RequestMapping("/api")
public class ApiController {

    @GetMapping("/user")
    public User getUser() {
        // Υποθέτουμε ότι υπάρχει μια κλάση User
        return new User("John Doe", 30); // Επιστρέφει την JSON αναπαράσταση του αντικειμένου User
    }
}