पाठ 3 / 27
HTTP Methods और उनकी गारंटियाँ
GET, POST, PUT, PATCH और DELETE को उनकी safety और idempotency semantics के अनुसार उपयोग करें।
Safe और idempotent
Safe methods सर्वर की स्थिति नहीं बदलते (GET, HEAD, OPTIONS), इसलिए clients, caches और crawlers उन्हें खुलकर बुला सकते हैं। Idempotent methods दोहराने पर वही अंतिम स्थिति देते हैं (GET, PUT, DELETE, और डिज़ाइन से HEAD/OPTIONS), जिससे timeout के बाद retries सुरक्षित होते हैं। POST दोनों नहीं है: उसे दोहराने से दूसरा resource बन सकता है। PUT ज्ञात URL पर पूरे resource को बदलता है; PATCH आंशिक बदलाव लगाता है; DELETE resource हटाता है (पहले से हटी चीज़ को हटाना फिर भी ठीक होना चाहिए)। स्थिति बदलने के लिए GET कभी उपयोग न करें, क्योंकि links, prefetchers और caches उन्हें चला देंगे।
Methods की गारंटियाँ एक नज़र में
किसी ऑपरेशन के लिए कौन-सा method ठीक है यह तय करते समय इस तालिका का उपयोग करें।
Method Safe Idempotent Typical use
GET yes yes read a resource or a collection
HEAD yes yes headers only (check existence, size, ETag)
PUT no yes replace a resource at a known URL
PATCH no no* partial update (*can be made idempotent)
DELETE no yes remove a resource
POST no no create, or run an actionPATCH के लिए JSON Merge Patch, चलाकर
मैंने यह सादा-Python उदाहरण चलाया। JSON Merge Patch (RFC 7396) सरल आंशिक-अपडेट format है: patch की keys बदलती या जुड़ती हैं, nested objects मिलते हैं, और null मान key हटाता है। Arrays पूरी बदल जाती हैं। यहाँ pin हटा, state जुड़ा और tags बदले।
import hmac, hashlib, json, time, bisect
def merge_patch(target, patch):
if not isinstance(patch, dict): return patch
result = dict(target) if isinstance(target, dict) else {}
for k, v in patch.items():
if v is None: result.pop(k, None)
else: result[k] = merge_patch(result.get(k), v)
return result
doc = {"name": "Asha", "address": {"city": "Pune", "pin": "411001"}, "tags": ["a"]}
print(merge_patch(doc, {"address": {"pin": None, "state": "MH"}, "tags": ["x", "y"], "name": "Asha R"}))
Output:
{'name': 'Asha R', 'address': {'city': 'Pune', 'state': 'MH'}, 'tags': ['x', 'y']}त्वरित जाँच: कौन-सा method idempotent है और पूरे resource को बदलता है?
- OPTIONS
- POST
- GET
- PUT
Answer
PUT — PUT resource को दिए रूप पर सेट करता है, इसलिए दोहराने पर वही स्थिति रहती है।