🗺️
Building REST Controllers

Request Mapping Patterns

@GetMapping, @PostMapping aur Beyond
💡 Request mapping, EK BUILDING DIRECTORY hai — HAR URL PATTERN, EK SPECIFIC "ROOM" (METHOD) ki TARAF, POINT karta hai. NESTED RESOURCES (jaise /users/{id}/orders), EK BUILDING KE ANDAR, "SUB-DIRECTORY" (jaise "3rd FLOOR, ROOM 5") jaisa hai.

@GetMapping, @PostMapping, @PutMapping, @PatchMapping, @DeleteMapping — SAB, @RequestMapping ke SHORTHAND VERSIONS hain, SPECIFIC HTTP METHOD ke liye. NESTED RESOURCES (jaise EK USER ke SAARE ORDERS) ko, HIERARCHICAL URLs SE, EXPRESS kiya jaata hai — /api/users/{userId}/orders.

Multiple PATH VARIABLES, EK HI METHOD mein, USE ho sakte hain — jaise /api/users/{userId}/orders/{orderId}. Path VARIABLES ke NAAM, METHOD PARAMETER ke NAAM SE, AUTOMATICALLY, MATCH ho jaate hain (agar SAME naam ho), YA @PathVariable("customName") SE, EXPLICITLY, MAP kiye ja sakte hain.

@RestController
@RequestMapping("/api/users/{userId}/orders")
public class UserOrderController {
    @GetMapping
    public List<Order> getUserOrders(@PathVariable Long userId) { }

    @GetMapping("/{orderId}")
    public Order getUserOrder(@PathVariable Long userId, @PathVariable Long orderId) { }

    @PostMapping
    public Order createOrder(@PathVariable Long userId, @RequestBody OrderDto dto) { }
}
// GET /api/users/42/orders/7 → user 42 ka, order 7
🗺️
Request mapping, EK BUILDING DIRECTORY hai — HAR URL PATTERN, EK SPECIFIC "ROOM" (METHOD) ki TARAF, POINT karta hai. NESTED RESOURCES (jaise /users/{id}/orders), EK BUILDING KE ANDAR, "SUB-DIRECTORY" (jaise "3rd FLOOR, ROOM 5") jaisa hai.
1 / 2
⚡ Quick Recap
  • @GetMapping/@PostMapping/etc = @RequestMapping ke shorthand versions
  • Nested resources = hierarchical URLs (/users/{id}/orders)
  • URLs ko, 2-3 levels se ZYAADA, deep NAHI rakhna chahiye
Is page mein (2 subtopics)

Class-level @RequestMapping("/api/products"), EK "BASE PATH" hai — HAR METHOD ka MAPPING, ISKE, RELATIVE, RESOLVE hota hai. AGAR, EK METHOD PAR, KOI, ADDITIONAL PATH NAHI hai, WOH, BASE PATH PAR HI, RESPOND karega.

@RequestMapping("/api/products")
public class ProductController {
    @GetMapping           // → GET /api/products
    @GetMapping("/{id}")  // → GET /api/products/{id}
}

RARE CASES mein, EK, HI, PATH, MULTIPLE, HTTP METHODS SUPPORT kar sakta hai, DIFFERENT, METHODS (jaise, @GetMapping aur @PostMapping, DONO, /api/products PAR) — YE, NORMAL hai, kyunki, HAR ONE, ALAG, HTTP METHOD, HANDLE karta hai, KOI, CONFLICT NAHI.

  • GET /api/products = list fetch karna
  • POST /api/products = naya product create karna
  • Dono, SAME path, DIFFERENT HTTP methods