Android पर API टेस्टिंग: आपकी जेब में एक पूरा REST, GraphQL और WebSocket क्लाइंट
अपने Android फ़ोन से REST, WebSocket, GraphQL और SSE APIs को टेस्ट और डीबग करें। PocketCode एक HTTP क्लाइंट देता है — auth, स्क्रिप्ट, environments, mock server और कोड जनरेशन — सब IDE में ही बना हुआ।
अपडेट, सितंबर 2026: API Tester में अब Socket.IO और MQTT भी हैं, और अपने पुराने test simulator की जगह यह एक असली sandboxed JavaScript इंजन ले आया है। नया क्या है देखें। कोड में एक gRPC पैनल भी है, पर मौजूदा वर्शन उसे तब तक छिपा देता है जब तक वह Android पर काम नहीं करता।
एक API सबसे ख़राब पल में टूट जाता है: आप अपने डेस्क से दूर हैं, webhook चल नहीं रहा, और आपका Postman वाला लैपटॉप घर पर है। Android पर, आम जवाब होता है "जब तक आप वापस न आ जाएँ, तब तक रुकें।" PocketCode उस इंतज़ार को ख़त्म कर देता है — यह IDE में ही बना एक HTTP क्लाइंट देता है, ताकि आप किसी दूसरे ऐप या एक भी लाइन के जोड़-तोड़ वाले कोड के बिना अपने फ़ोन से REST APIs को टेस्ट और डीबग कर सकें।
यह आपके एडिटर, टर्मिनल और डेटाबेस मैनेजर के ठीक बगल में रहता है, और API को कॉल करने का रोज़ का काम सँभालता है: request बनाना, response पढ़ना, collections और variables रखना, और कुछ अतिरिक्त टूल। जहाँ कुछ कम है या सीमित है, यह लेख साफ़ बताता है।
यह असल में क्या कर सकता है

API Tester में छह प्रोटोकॉल हैं, जिन्हें request की context line के एक ड्रॉपडाउन से चुना जाता है:
| प्रोटोकॉल | किसके लिए है |
|---|---|
| REST (HTTP) | क्लासिक request/response क्लाइंट — 8 मेथड |
| WebSocket | लाइव द्विदिशीय टेक्स्ट संदेश (ws:// / wss://) |
| GraphQL | Queries और mutations + schema introspection |
| SSE | Server-Sent Events स्ट्रीम रीयल-टाइम में |
| Socket.IO | आधिकारिक क्लाइंट पर नामित events सुनें और भेजें |
| MQTT | topic द्वारा subscribe और publish करें, QoS 0/1/2, TLS के साथ या बिना (MQTT 5) |
REST के लिए यह सभी आठ HTTP मेथड कवर करता है — GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS और TRACE — हर एक रंग से कोडेड, ताकि आप एक नज़र में पूरा collection स्कैन कर सकें।
बिना एन्क्रिप्शन वाले http:// और ws:// सिर्फ़ localhost, 127.0.0.1 और
10.0.2.2 पर चलते हैं; बाक़ी सब के लिए HTTPS चाहिए। आपके लोकल नेटवर्क पर
http://192.168.x.x वाला सर्वर ब्लॉक हो जाता है, इसलिए HTTPS या tunnel इस्तेमाल करें।
एक request बनाना
request editor एक URL बार, प्रोटोकॉल और environment वाली एक context line, और टैब पंक्ति के रूप में सेक्शन है:
- URL बार — मेथड सिलेक्टर, एक monospace URL फ़ील्ड, और एक Send बटन जो request के चलने के दौरान Cancel बन जाता है।
- Params — एक key/value एडिटर जहाँ हर पंक्ति में एक enable/disable चेकबॉक्स और एक active-count बैज होता है, ताकि आप query params को हटाए बिना टॉगल कर सकें।
- Headers — वही key/value एडिटर, जिसमें bulk edit (
Key: valueपंक्तियाँ पेस्ट करें) और हर पंक्ति पर secret फ़्लैग है। हर नई request के साथContent-Type: application/jsonheader आता है। - Body — दस body प्रकार: JSON (Beautify / Minify के साथ), Form URL-Encoded, Multipart (हर फ़ील्ड TEXT या FILE, एक file picker के साथ), Raw, XML, HTML, JavaScript, Binary (एक raw फ़ाइल भेजें), और GraphQL।
- Settings — timeout, redirects का पालन और SSL verification।
REST requests में आप URL, params, headers, body या auth में एक {{variable}} डाल
सकते हैं और यह भेजते समय interpolate हो जाता है (इस पर आगे और बात)। GraphQL query
और WebSocket, SSE, Socket.IO व MQTT पैनल variables को नहीं बदलते।
Authentication
PocketCode दस auth प्रकार सूचीबद्ध करता है, जिनमें से आठ काम करते हैं, और वे आम कार्ड और एक advanced सेक्शन में बँटे हैं:
- आम: None, Bearer (token + custom prefix), Basic, API Key (Header या Query Param के विकल्प के साथ)।
- Advanced: OAuth2, Digest (username और password; बाक़ी server की 401 challenge देती है), AWS Signature v4 (access key, secret, region, service, session token), और एक पूरी तरह से Custom header। Hawk और NTLM भी सूची में हैं, पर जल्द आ रहे हैं के रूप में चिह्नित, और अभी कुछ नहीं करते।
OAuth2 चार grant कार्ड दिखाता है, लेकिन सिर्फ़ दो आपके लिए token लाते हैं: Client
Credentials (Get token बटन) और Authorization Code (ऐप ब्राउज़र खोलता है, आप
लौटा हुआ code हाथ से पेस्ट करते हैं और Exchange code दबाते हैं)। Password और
Implicit के लिए access token आप ख़ुद पेस्ट करते हैं। token हमेशा Authorization: Bearer
के रूप में भेजा जाता है। PKCE और refresh token नहीं हैं।
स्क्रिप्ट और टेस्ट
हर request के आसपास दो तरह की जाँच चलती हैं:
- No-code assertions — एक फ़ील्ड चुनें (status code, response time, एक header, body में एक JSONPath, body का आकार), एक operator और एक अपेक्षित value। ये हमेशा evaluate होते हैं।
- JavaScript स्क्रिप्ट — एक pre-request script भेजने से पहले चलती है और एक
test script response के बाद। ये एक अलग (isolated) इंजन में चलती हैं और
pm.*का एक छोटा हिस्सा देती हैं:pm.test,pm.expect,pm.environment,pm.globals(केवल पढ़ने के लिए),pm.request(केवल पढ़ने के लिए) और tests मेंpm.response।pm.sendRequest,pm.variablesयाsetNextRequestनहीं हैं, और स्क्रिप्ट request को बदल नहीं सकती। इन कॉल्स का इस्तेमाल करने वाली Postman स्क्रिप्ट console में script error के साथ फ़ेल होती है। जिस डिवाइस में आधुनिक WebView नहीं है, वहाँ स्क्रिप्ट नहीं चलतीं और सिर्फ़ assertions चलते हैं।
पहले से बने नौ assertions का एक मेन्यू है: status is 200, status is 2xx, response time < 500 ms, has JSON body, body not empty, has Content-Type header, body contains string, array length > 0 और एक JSON schema valid, जो व्यवहार में सिर्फ़ यह जाँचता है कि body JSON है। Console टैब स्क्रिप्ट जो कुछ प्रिंट करती हैं और requests को, पूरे सेशन के लिए, LOG / INFO / WARN / ERROR स्तरों पर लॉग करता है।
response पढ़ना
response पैनल ऊपर आपको वे संख्याएँ देता है जो मायने रखती हैं — status code (रेंज के अनुसार एक रंग के साथ), मिलीसेकंड में कुल समय, body का आकार और content type। उसके नीचे, टैब:
| टैब | आपको क्या मिलता है |
|---|---|
| Body | Pretty (key filter और JSONPath filter वाला खुलने-बंद होने वाला JSON tree; दूसरी सामग्री जैसी है वैसी दिखती है), Raw, और Preview (सिर्फ़ HTML, JavaScript बंद) |
| Headers | कॉपी करने में आसान एक टेबल |
| Cookies | Secure / HttpOnly बैज वाली पंक्तियाँ |
| Tests | no-code assertions और JavaScript test script दोनों के परिणाम |
| Timeline | DNS · TCP · TLS · TTFB · transfer |
| Console | स्क्रिप्ट ने जो कुछ लॉग किया, LOG / INFO / WARN / ERROR स्तरों पर |
आप body और हर header को कॉपी कर सकते हैं, और JSON tree की किसी भी value को variable के रूप में सेव कर सकते हैं। response के लिए Share या Save नहीं है, और highlight किए गए मैचों के साथ टेक्स्ट खोज भी नहीं है।
REST से आगे
- WebSocket एक
ws://याwss://URL से कनेक्ट होता है, कनेक्शन की स्थिति और भेजे व पाए गए टेक्स्ट संदेशों का चैट-शैली लॉग दिखाता है। custom handshake headers, subprotocols, auto-reconnect या सेव किए गए templates नहीं हैं, और binary फ़्रेम नहीं दिखते। - GraphQL में JSON variables के साथ एक query एडिटर, एक Fetch Schema बटन जो introspection चलाता है, और types व fields (arguments की संख्या के साथ) के लिए एक schema explorer है। Operations HTTP POST के रूप में जाते हैं: operation name फ़ील्ड, subscriptions, या पैनल के अपने auth/headers नहीं हैं।
- SSE स्ट्रीम एक लाइव event लॉग (type, id और data के पहले 300 अक्षर) में आती हैं।
custom headers, type filter या auto-reconnect नहीं हैं, और server का
retryअनदेखा किया जाता है। - gRPC कोड में है, पर मौजूदा वर्शन में छिपा हुआ है: उसके पैनल को एक ऐसी लाइब्रेरी चाहिए जिसे ऐप बाहर रखता है, इसलिए जब तक वह Android पर काम नहीं करता, वह protocol menu में नहीं दिखता।
- Socket.IO एक namespace से कनेक्ट होता है, auto-reconnect टॉगल के साथ। नामित events के लिए listeners जोड़ें और JSON payload के साथ अपने events emit करें — चैट-शैली लॉग में हर संदेश उसके event नाम के साथ चिह्नित होता है। custom headers, auth या query parameters नहीं हैं, और listeners हटाए नहीं जा सकते।
- MQTT केवल MQTT 5 है (जो broker सिर्फ़ 3.1.1 बोलता है वह कनेक्शन ठुकरा सकता है)। यह TLS के साथ या बिना, और username/password के साथ या बिना कनेक्ट होता है, QoS 0, 1 या 2 के साथ topics subscribe करता है, QoS के साथ publish करता है (retain विकल्प नहीं है) और संदेशों को topic के अनुसार समूहीकृत करता है। unsubscribe, last-will या अपना certificate नहीं है।
व्यवस्थित रहना
- Collections में requests रहती हैं, नाम से खोज, export और delete के साथ, और किसी भी request को वापस एडिटर में लोड करने के लिए एक टैप। Folders imports के साथ आते हैं और Runner उन्हें चला सकता है, पर आप सूची से उन्हें बना या खोल नहीं सकते, और किसी collection या उसकी requests का नाम नहीं बदल सकते। एडिटर से सेव की गई सभी requests का नाम "New Request" होता है। Free प्लान में एक collection रहता है।
- History 200 एंट्री तक रखता है, URL या नाम से खोजा जा सकता है, "starred only" या GET / POST / PUT / DELETE से फ़िल्टर किया जा सकता है, और Today / Yesterday / This week / Older में समूहित है। किसी एंट्री को Star करें, लोड करें, किसी दूसरे response से तुलना करें, या उसे mock route में बदलें। Free प्लान में 10 एंट्री के बाद history सेव होना बंद हो जाती है, जब तक आप उसे साफ़ न करें।
- Environments
{{variable}}सेट को मैनेज करते हैं, साथ में global variables का एक सेक्शन। एक ताला variable को secret के रूप में चिह्नित करता है: वह स्क्रीन पर छिपा रहता है और जनरेट किए गए cURL और कोड में{{name}}placeholder के रूप में रहता है। समाधान सबसे विशिष्ट से सबसे सामान्य की ओर होता है: पहले{{$guid}}जैसा कोई dynamic variable, फिर (यदि सक्रिय हो तो) Runner के डेटा फ़ाइल की मौजूदा row, फिर Collection, Environment, और अंत में Global। Free प्लान में एक environment रहता है। - एक स्थायी cookie jar हर
Set-Cookieसे ख़ुद को भर लेता है और Secure / HttpOnly बैज दिखाता है। आप cookies हाथ से नहीं जोड़ सकते।
पावर टूल्स

- टेक्स्ट पेस्ट करके cURL, Postman v2.1, Insomnia, OpenAPI 3.0 / Swagger (JSON या YAML) और HAR से Import करें। किसी collection को Postman v2.1, Insomnia, OpenAPI 3.0, HAR या Markdown (क्लिपबोर्ड पर) के रूप में Export करें, या एक अकेली request को cURL के रूप में।
- Code Generator मौजूदा request को 27 मेन्यू एंट्री के लिए (26 अलग आउटपुट, क्योंकि दो cURL हैं)
पेस्ट-करने-को-तैयार कोड में बदल देता है — cURL, HTTPie, Wget, Fetch, Axios,
Python
requests, Java OkHttp, Swift URLSession, Gonet/http, PHP, Ruby, C#, Rust, Dart, PowerShell और भी बहुत कुछ — method, URL, headers और body के साथ। सिर्फ़ cURL आउटपुट में auth शामिल है। - एक लोकल Mock Server (Pro प्लान का हिस्सा) डिवाइस पर एक HTTP server खड़ा
करता है (डिफ़ॉल्ट port 8090, सिर्फ़ loopback: इसी डिवाइस से पहुँच, नेटवर्क से नहीं) जहाँ हर route एक मेथड, path pattern
(
/users/:id), status और body परिभाषित करता है, साथ में एक global देरी — आने वाली कॉल के एक लाइव लॉग के साथ। Routes सेशनों के बीच सेव नहीं होते। - Collection Runner और Load Test भी Pro हैं। Runner एक collection को क्रम से चलाता है, 1 से 100 iterations तक, या CSV/JSON डेटा फ़ाइल की हर row पर एक iteration। Load test अपनी requests एक के बाद एक भेजता है; उसके concurrency और ramp-up फ़ील्ड का अभी कोई असर नहीं है।
आपका डेटा डिवाइस पर ही रहता है
Collections, history, environments और cookies आपके फ़ोन पर एक लोकल डेटाबेस में संग्रहीत होते हैं, और आपके भेजे requests सीधे उसी server तक जाते हैं जिसकी ओर आप इशारा करते हैं। Cloud Sync डिफ़ॉल्ट रूप से बंद है; अगर आप इसे चालू करते हैं (Pro), तो यह आपकी settings, snippets और दूसरा डेटा सिंक करता है, पर API collections और environments अभी सिंक नहीं होते। डेवलपमेंट के लिए आप self-signed certs के लिए SSL verification बंद कर सकते हैं। और चूँकि यह IDE का हिस्सा है, जब आप अपने APIs के बारे में पूछते हैं तो AI असिस्टेंट एक request भेज सकता है, आपके collections सूचीबद्ध कर सकता है या एक cURL कमांड import कर सकता है।
API को टेस्ट करने का मतलब हुआ करता था "अपने कंप्यूटर पर वापस जाओ।" अब ऐसा नहीं है। PocketCode एक HTTP क्लाइंट — छह प्रोटोकॉल, REST से MQTT तक — उसी ऐप में रखता है जहाँ आप कोड लिखते और शिप करते हैं।
PocketCode Google Play पर उपलब्ध है। इसे अपने डिवाइस पर आज़माने के लिए PocketCode पाएँ।
API टेस्टर
इस पर त्वरित जवाब
PocketCode आज़माने के लिए तैयार हैं?
ऐप डाउनलोड करें और अपने फ़ोन से कोडिंग शुरू करें।