DEV Community

Er. Bhupendra
Er. Bhupendra

Posted on

@Controller vs @RestController

Aap kaafi had tak sahi hain, lekin ek bohot important difference hai jo aapko samajhna chahiye.

Sirf @Controller likhne aur @RestController likhne mein thoda farq hai. Aaiye isse clear karte hain:

1. @Controller (Purana Tarika - Web Pages ke liye)

Agar aap sirf @Controller likhte hain, toh Spring ko lagta hai ki aap Web Pages (jaise HTML, JSP, ya Thymeleaf) dikhana chahte hain.

  • Kaam: Ye class ko Controller toh bana deta hai.
  • Result: Agar aapka method "Success" return karega, toh Spring ek Success.html naam ki file dhundne lagega.
  • API ke liye: Agar aapko isse API banani hai, toh har method ke upar alag se @ResponseBody likhna padega.

2. @RestController (Naya Tarika - REST APIs ke liye)

Ye @Controller ka hi "Advanced Version" hai. Yeh do cheezon se milkar bana hai: @Controller + @ResponseBody.

  • Kaam: Ye Spring ko batata hai ki ye class REST API handle karegi.
  • Result: Aap jo bhi return karenge (String, Object, List), wo direct JSON ban kar client (Postman/Mobile App) ko mil jayega. Koi HTML file nahi dhundi jayegi.

Kya iske paas PUT, PATCH, DELETE methods hote hain?

Haan! Lekin sirf @RestController likhne se ye methods khud-ba-khud nahi bante. Aapko class ke andar Methods likhne padte hain aur unhe batana padta hai ki kaun sa method kya kaam karega.

Aap in annotations ka use karte hain class ke andar:

  1. @GetMapping: Data mangwane ke liye (Read).
  2. @PostMapping: Naya data bhejne ke liye (Create).
  3. @PutMapping: Poora data update karne ke liye (Update).
  4. @PatchMapping: Data ka kuch hissa update karne ke liye (Partial Update).
  5. @DeleteMapping: Data hatane ke liye (Delete).

Example se samjhiye:

@RestController // Yeh batata hai ki ye API hai aur JSON return karegi
public class MyController {

    // 1. GET (Read)
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello World"; // JSON/String return karega
    }

    // 2. POST (Create)
    @PostMapping("/add")
    public String addData() {
        return "Data Added";
    }

    // 3. PUT (Update)
    @PutMapping("/update")
    public String updateData() {
        return "Data Updated";
    }

    // 4. DELETE (Delete)
    @DeleteMapping("/delete")
    public String deleteData() {
        return "Data Deleted";
    }
}
Enter fullscreen mode Exit fullscreen mode

Conclusion (Aapka Jawab):

  • Aapne sahi kaha ki @RestController batata hai ki ye API hai.
  • Lekin PUT, PATCH, DELETE handle karne ke liye aapko class ke andar @PutMapping, @PatchMapping wagera likhna padta hai.
  • Agar aap API bana rahe hain (jahan aapko JSON data chahiye), toh hamesha @RestController hi use karein, @Controller nahi.

Top comments (0)