Request Mapping Patterns
@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- @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
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