API टेस्टिंग क्या है?
API टेस्टिंग किसी सर्विस को उसकी स्क्रीन के बजाय उसके इंटरफ़ेस से जाँचती है: चुने हुए मेथड, हेडर और बॉडी के साथ रिक्वेस्ट भेजें, फिर स्टेटस कोड, रिस्पॉन्स हेडर, बॉडी की संरचना और वैल्यू, और लगा समय सत्यापित करें। UI के नीचे चलने के कारण यह तेज़ और स्थिर है और इंटीग्रेशन दोष पहले पकड़ती है — इसीलिए रिग्रेशन सूट API-फ़र्स्ट बनाए जाते हैं।
गाइड पढ़ें: API टेस्टिंग क्या है? REST API कैसे टेस्ट करें
API रिस्पॉन्स वैलिडेटर कैसे इस्तेमाल करें
- रिस्पॉन्स पेस्ट करें (curl -i, प्रॉक्सी या DevTools से) या सिर्फ़ उसकी JSON बॉडी।
- अपेक्षित स्टेटस और हेडर डालें, हर लाइन में एक फ़ील्ड नियम, और चाहें तो एक स्कीमा भी।
- जाँचें। हर अपेक्षा PASS, FAIL या ERROR (जो नियम पार्स नहीं हो सके) वाली एक पंक्ति बन जाती है।
- चेकलिस्ट अपनी टेस्ट रिपोर्ट में कॉपी करें।
API रिस्पॉन्स वैलिडेटर की खूबियाँ
- कच्चा HTTP रिस्पॉन्स (status line + हेडर + बॉडी) या सिर्फ़ JSON बॉडी — दोनों स्वीकार करता है
- अपेक्षित स्टेटस (200, 2xx, 200,201 या 200-204) और हेडर अपेक्षाएँ (contains / exists)
- JSONPath फ़ील्ड नियम: exists, ==, !=, तुलनाएँ, type, length, matches, contains, in, empty, null
- वैकल्पिक JSON Schema वैलिडेशन, उल्लंघनों की तालिका के साथ
- असली वैल्यू सहित pass/fail चेकलिस्ट, CSV में डाउनलोड करने योग्य
API रिस्पॉन्स वैलिडेटर का उदाहरण
यूज़र रिस्पॉन्स की जाँच
इनपुट:
HTTP/1.1 200 OK
Content-Type: application/json
{ "status": "ok", "data": { "id": "usr_1029", "email": "layla@example.com" } }
Rules: $.data.id exists · $.data.email matches ^\S+@\S+$ · $.data.password not existsआउटपुट:
PASS · 5 checks
status 2xx — Status 200 is 2xx.
Content-Type: application/json — contains "application/json".
$.data.id exists — exists.
$.data.email matches … — matches.
$.data.password not exists — absent.API रिस्पॉन्स वैलिडेटर के बारे में अक्सर पूछे जाने वाले सवाल
मैं क्या पेस्ट कर सकता हूँ?
या तो कच्चा HTTP रिस्पॉन्स (status line, हेडर, ख़ाली लाइन, बॉडी — जैसा curl -i छापता है) या सिर्फ़ JSON बॉडी। स्टेटस और हेडर की जाँच के लिए कच्चा रिस्पॉन्स ज़रूरी है।
कौन-से फ़ील्ड नियम सपोर्ट किए जाते हैं?
JSONPath के बाद एक शर्त: exists, not exists, == value, != value, > < >= <= n, type string|number|integer|boolean|array|object|null, length >= n, matches <regex>, contains <x>, in [a, b], empty, not empty, null, not null।
क्या मैं JSON Schema भी इस्तेमाल कर सकता हूँ?
हाँ। कोई स्कीमा पेस्ट करें (draft-07 / 2019-09 / 2020-12 keyword) और बॉडी उसके आधार पर जाँची जाएगी; उल्लंघन उनके path के साथ सूचीबद्ध होते हैं।
क्या टूल मेरे लिए URL फ़ेच करता है?
नहीं — यह वही जाँचता है जो आप पेस्ट करते हैं। रिक्वेस्ट भेजकर लाइव assertion लगाने के लिए REST API टेस्टर इस्तेमाल करें।
तकनीकी नोट्स
नियम पहले JSONPath match पर लागू होते हैं। तुलना की literal वैल्यू JSON के रूप में पार्स होती हैं (इसलिए 42, true और "text" उम्मीद के मुताबिक़ काम करते हैं); ग़ैर-संख्यात्मक operand चुपचाप पास होने के बजाय साफ़ संदेश के साथ संख्यात्मक तुलना में फ़ेल होते हैं।
संदर्भ
- RFC 9110: HTTP SemanticsHTTP मेथड, हेडर फ़ील्ड, स्टेटस कोड और कंटेंट निगोशिएशन के अर्थ, वायर वर्ज़न से स्वतंत्र।
- OpenAPI SpecificationREST API के वर्णन का मानक: पाथ, ऑपरेशन, पैरामीटर, स्कीमा, रिस्पॉन्स और सिक्योरिटी स्कीम।
- OWASP Cheat Sheet Series: REST SecurityREST API के सुरक्षा नियम: HTTPS, हर रिक्वेस्ट पर ऑथेंटिकेशन, इनपुट वैलिडेशन, सुरक्षित एरर रिस्पॉन्स, रेट लिमिटिंग।