HTTP Methods Deep Dive
GET, DATA FETCH karta hai — SAFE (NO SIDE EFFECTS) aur IDEMPOTENT (BAAR-BAAR CALL karne SE, SAME RESULT). POST, NAYA RESOURCE CREATE karta hai — NA SAFE, NA IDEMPOTENT (HAR CALL, EK NAYA RESOURCE BANA SAKTA hai). PUT, EK RESOURCE ko, POORI TARAH, REPLACE karta hai — IDEMPOTENT (BAAR-BAAR CALL karo, RESULT SAME rahega).
PATCH, EK RESOURCE ko, PARTIALLY, UPDATE karta hai (SIRF, SPECIFIED FIELDS) — TYPICALLY, IDEMPOTENT NAHI MAANA jaata (DEPENDS on IMPLEMENTATION). DELETE, EK RESOURCE ko, REMOVE karta hai — IDEMPOTENT (EK BAAR DELETE, DOBARA DELETE, SAME RESULT — RESOURCE ABSENT).
@RestController
@RequestMapping("/api/products")
public class ProductController {
@GetMapping("/{id}")
public Product getProduct(@PathVariable Long id) { } // SAFE, idempotent
@PostMapping
public Product createProduct(@RequestBody ProductDto dto) { } // NOT idempotent
@PutMapping("/{id}")
public Product replaceProduct(@PathVariable Long id, @RequestBody ProductDto dto) { } // idempotent
@PatchMapping("/{id}")
public Product updateProduct(@PathVariable Long id, @RequestBody Map<String, Object> updates) { } // partial update
@DeleteMapping("/{id}")
public void deleteProduct(@PathVariable Long id) { } // idempotent
}- GET/PUT/DELETE = idempotent, POST = NOT idempotent
- GET = safe (no side effects), baaki, side effects HAVE karte hain
- PATCH = partial update, PUT = full replacement
HAR BAAR, JAB, EK POST REQUEST, "CREATE ORDER" ke liye, BHEJI JAATI hai, EK NAYA, DIFFERENT, ORDER, BAN SAKTA hai — ISLIYE, POST, IDEMPOTENT NAHI hai. Isi WAJAH SE, IDEMPOTENCY KEYS (jaise, PAYMENT APIs mein), POST OPERATIONS ke liye, IMPORTANT ban jaate hain.
HEAD, GET jaisa hai, LEKIN, RESPONSE BODY, RETURN NAHI karta — SIRF, HEADERS, RETURN karta hai (jaise, RESOURCE EXISTS karta hai YA NAHI, CHECK karne ke liye, TEZ WAY). OPTIONS, EK RESOURCE PAR, KAUN SE, HTTP METHODS, ALLOWED HAIN, YE, DISCOVER karne ke liye, USE hota hai (CORS PREFLIGHT REQUESTS mein, COMMON).
- HEAD = GET jaisa, LEKIN, BODY ke BINA — resource existence check karne ke liye
- OPTIONS = allowed methods, discover karne ke liye — CORS preflight mein, COMMON