🎮
Building REST Controllers

@RestController Deep Dive

Kaise Kaam Karta Hai
💡 @RestController, EK RESTAURANT ka "ORDER TAKING COUNTER" hai — CUSTOMER (CLIENT) ka ORDER (REQUEST) LETA hai, KITCHEN (SERVICE LAYER) ko PASS karta hai, aur READY DISH (JSON RESPONSE) SEEDHA, CUSTOMER ko, SERVE karta hai — MENU CARD (VIEW TEMPLATE) DIKHANE ki, ZAROORAT NAHI.

@RestController = @Controller + @ResponseBody — HAR METHOD ka RETURN VALUE, AUTOMATICALLY, JSON (YA XML) mein, SERIALIZE hoke, RESPONSE BODY mein, DIRECTLY, CHALA jaata hai — VIEW RESOLUTION (HTML TEMPLATE RENDERING) COMPLETELY, SKIP ho jaati hai.

Class-level @RequestMapping, EK COMMON BASE PATH DEFINE karta hai (jaise /api/products) — HAR METHOD ka MAPPING, ISKE RELATIVE hota hai. DEPENDENCY INJECTION (SERVICE LAYER), CONSTRUCTOR SE, INJECT hoती hai — CONTROLLER, THIN RAKHA jaata hai, BUSINESS LOGIC, SERVICE mein REHTI hai.

@RestController
@RequestMapping("/api/products")
public class ProductController {
    private final ProductService productService;

    public ProductController(ProductService productService) {
        this.productService = productService;
    }

    @GetMapping
    public List<ProductDto> getAllProducts() {
        return productService.findAll();   // JSON array, AUTOMATICALLY serialize
    }

    @GetMapping("/{id}")
    public ProductDto getProduct(@PathVariable Long id) {
        return productService.findById(id);
    }
}
🎮
@RestController, EK RESTAURANT ka "ORDER TAKING COUNTER" hai — CUSTOMER (CLIENT) ka ORDER (REQUEST) LETA hai, KITCHEN (SERVICE LAYER) ko PASS karta hai, aur READY DISH (JSON RESPONSE) SEEDHA, CUSTOMER ko, SERVE karta hai — MENU CARD (VIEW TEMPLATE) DIKHANE ki, ZAROORAT NAHI.
1 / 6
⚡ Quick Recap
  • @RestController = @Controller + @ResponseBody
  • Return value, AUTOMATICALLY, JSON mein serialize hota hai
  • Controller THIN rakho — business logic, Service layer mein
Is page mein (2 subtopics)

Spring, INTERNALLY, HttpMessageConverter INTERFACE ke, IMPLEMENTATIONS (jaise, MappingJackson2HttpMessageConverter) USE karta hai, JAVA OBJECTS ko, JSON mein, CONVERT karne ke liye — @ResponseBody, Spring ko, SIGNAL karta hai, KI, RETURN VALUE, EK VIEW NAME NAHI, BALKI, DIRECTLY, RESPONSE BODY hai.

💡Tip: Jackson library, DEFAULT, JSON CONVERTER hai — CUSTOM SERIALIZATION LOGIC ke liye, @JsonProperty, @JsonIgnore jaise ANNOTATIONS, DTO FIELDS PAR, LAGAI ja sakti hain.

MODERN Spring Boot CODE mein, CONTROLLERS, CONSTRUCTOR INJECTION USE karte hain (@Autowired, IMPLICIT hai, AGAR, EK HI CONSTRUCTOR hai) — TESTING mein, MOCK SERVICES, EASILY, PASS ki ja sakti hain, BINA, Spring CONTEXT, START kiye.

@RestController
public class ProductController {
    private final ProductService service;
    public ProductController(ProductService service) {   // @Autowired implicit
        this.service = service;
    }
}