API टेस्टिंग क्या है?
API टेस्टिंग किसी सर्विस को उसकी स्क्रीन के बजाय उसके इंटरफ़ेस से जाँचती है: चुने हुए मेथड, हेडर और बॉडी के साथ रिक्वेस्ट भेजें, फिर स्टेटस कोड, रिस्पॉन्स हेडर, बॉडी की संरचना और वैल्यू, और लगा समय सत्यापित करें। UI के नीचे चलने के कारण यह तेज़ और स्थिर है और इंटीग्रेशन दोष पहले पकड़ती है — इसीलिए रिग्रेशन सूट API-फ़र्स्ट बनाए जाते हैं।
गाइड पढ़ें: API टेस्टिंग क्या है? REST API कैसे टेस्ट करें
API रिस्पॉन्स कम्पेरेटर कैसे इस्तेमाल करें
- रिस्पॉन्स A (जैसे staging) और रिस्पॉन्स B (जैसे production) पेस्ट करें।
- "अस्थिर फ़ील्ड नज़रअंदाज़ करें" चालू रखें, ज़रूरत हो तो और ignore path जोड़ें, और array क्रम का व्यवहार चुनें।
- तुलना करें। सारांश बताता है कि रिस्पॉन्स समतुल्य हैं या नहीं; तालिका हर अंतर उसके path के साथ दिखाती है।
- विज़ुअल diff के लिए लाइन व्यू इस्तेमाल करें और तालिका CSV में डाउनलोड करें।
API रिस्पॉन्स कम्पेरेटर की खूबियाँ
- अर्थ-आधारित JSON तुलना — key का क्रम और फ़ॉर्मैटिंग कभी अंतर नहीं गिने जाते
- एक चेकबॉक्स से अस्थिर फ़ील्ड (id, timestamp, etag, टोकन, cursor) नज़रअंदाज़ करें
- पैटर्न से path नज़रअंदाज़ करें: $.meta.requestId, $.items[*].updatedAt, **.etag या सिर्फ़ key का नाम
- वैकल्पिक रूप से array का क्रम अनदेखा करने और null को ग़ैरमौजूद मानने के मोड
- अंतर की तालिका (सिर्फ़ A में / सिर्फ़ B में / बदला हुआ / टाइप बदला), नज़रअंदाज़ किए फ़ील्ड की सूची और लाइन diff
API रिस्पॉन्स कम्पेरेटर का उदाहरण
Staging बनाम production
इनपुट:
A: { "status": "paid", "customer": { "id": "cust_9" }, "updatedAt": "2025-08-30T10:00:00Z" }
B: { "status": "PAID", "customer": { "id": "cust_9", "tier": "gold" }, "updatedAt": "2025-08-31T09:12:44Z" }आउटपुट:
Different · Added in B 1 · Changed 1 · Ignored: $.updatedAt
$.status changed "paid" → "PAID"
$.customer.tier only in B – → "gold"API रिस्पॉन्स कम्पेरेटर के बारे में अक्सर पूछे जाने वाले सवाल
"अस्थिर फ़ील्ड नज़रअंदाज़ करें" क्या करता है?
यह उन key को छोड़ देता है जो आम तौर पर हर एनवायरनमेंट और रिक्वेस्ट में अलग होते हैं — id, timestamp (createdAt, updatedAt…), etag, request/trace id, टोकन, cursor — ताकि diff में सिर्फ़ मायने रखने वाले अंतर दिखें।
ignore path कैसे काम करते हैं?
हर लाइन में एक पैटर्न: पूरा JSON path ($.meta.requestId), array wildcard ($.items[*].updatedAt), deep wildcard (**.etag) या सिर्फ़ key का नाम, जिससे वह हर जगह नज़रअंदाज़ हो जाए।
क्या key का क्रम मायने रखता है?
नहीं — तुलना अर्थ के आधार पर होती है। अगर आपका API सूचियाँ हर बार अलग क्रम में लौटाता है तो "array का क्रम नज़रअंदाज़ करें" चालू करें।
टाइप बदलने को अलग से क्यों दिखाया जाता है?
जो वैल्यू नंबर से स्ट्रिंग (या object से null) बन जाए, वह आम तौर पर क्लाइंट तोड़ देती है, इसलिए उसे साधारण वैल्यू बदलाव के बजाय टाइप बदलाव के रूप में गिना जाता है।
तकनीकी नोट्स
संरचनात्मक diff चलने से पहले नज़रअंदाज़ किए गए फ़ील्ड दोनों डॉक्युमेंट से हटा दिए जाते हैं। अस्थिर key की पहचान एक चुनी हुई regular expression से होती है (id, uuid, createdAt, updated_at, etag, requestId, nonce, token, cursor…)।
संदर्भ
- RFC 9110: HTTP SemanticsHTTP मेथड, हेडर फ़ील्ड, स्टेटस कोड और कंटेंट निगोशिएशन के अर्थ, वायर वर्ज़न से स्वतंत्र।
- OpenAPI SpecificationREST API के वर्णन का मानक: पाथ, ऑपरेशन, पैरामीटर, स्कीमा, रिस्पॉन्स और सिक्योरिटी स्कीम।
- OWASP Cheat Sheet Series: REST SecurityREST API के सुरक्षा नियम: HTTPS, हर रिक्वेस्ट पर ऑथेंटिकेशन, इनपुट वैलिडेशन, सुरक्षित एरर रिस्पॉन्स, रेट लिमिटिंग।