API Tester
PocketCode के अंदर full-screen API क्लाइंट: scripts और no-code assertions के साथ REST requests, GraphQL, WebSocket, Server-Sent Events, Socket.IO और MQTT। Collections, secret variables वाले environments, तुलना की जा सकने वाली history, collection runner, load test, mock server और code generation इसे पूरा करते हैं। नीचे हर स्क्रीन बताती है कि वह क्या करती है और जहाँ कुछ कमी है, वहाँ क्या कमी है और क्यों।
यह क्या है और इसे कैसे खोलें
API Tester ऐप के ऊपर full-screen layer के रूप में खुलता है और डिवाइस घुमाने पर भी खुली request, आप जिस स्क्रीन पर थे और आपके live connections बनाए रखता है। यह छह protocols बोलता है: REST, WebSocket, GraphQL, SSE, Socket.IO और MQTT। कोड में एक gRPC panel है, पर यह वर्शन उसे छिपा देता है, जब तक वह Android पर काम नहीं करता।
इसे कैसे खोलें
- 1नेविगेशन बार में Tools पर टैप करें। Dev tools sheet खुलती है: API Test पर टैप करें (यह tile हर ऐप भाषा में “API Test” ही दिखाता है)।
- 2या command palette खोलकर API Tester चलाएँ।
- 3या Home से API Tester quick action इस्तेमाल करें, या API tester widget पर टैप करें, जो आपके सेव किए collections और हाल में चलाई गई requests दिखाता है।
- सिस्टम का back gesture request से वापस Start पर ले जाता है; Start से यह API Tester बंद कर देता है।
- API Tester का अपना कोई deep link नहीं है। Keyboard shortcuts सिर्फ़ landscape tablet layout में हैं (देखें खुली requests, सेव करना और शॉर्टकट)।
और कौन इसे इस्तेमाल करता है
- AI assistant के पास इस module के लिए तीन tools हैं: request भेजना, आपके collections की सूची देखना और cURL command को parse करना। ये स्क्रीन खुली हुए बिना जवाब देते हैं और वही REST engine इस्तेमाल करते हैं। उसे मिलने वाली response body 4096 characters पर कट जाती है, वह files attach नहीं कर सकता, PocketCode के अपने backend को call नहीं करेगा, और cURL command को parse करने का मतलब बस उसे पढ़ना है: editor में कुछ लोड नहीं होता।
- Workflows इस स्क्रीन से भेजी गई response से शुरू हो सकते हैं। event में URL, method, status code और समय होता है, body या headers कभी नहीं। AI जो requests भेजता है, वे इसे trigger नहीं करतीं।
- Cloud Sync (Pro) अभी आपके collections और environments sync नहीं करता; यह हिस्सा फ़िलहाल रोका गया है। विवरण प्राइवेसी और सुरक्षा में है।
स्क्रीन का नक्शा
हर स्क्रीन और sheet के लिए एक row। फ़ोन पर Start, Collections और History request के ⋮ menu से खुलते हैं; टैबलेट पर ऊपर की bar में Home, request का नाम, environment menu और Open library (जो Collections खोलता है) होते हैं।
| स्क्रीन | वहाँ कैसे पहुँचें | आप क्या कर सकते हैं |
|---|---|---|
| Start | सबसे पहले खुलती है; request से back; टैबलेट पर Home | New request, Collections या History चुनें, और जो अब भी connected है उस पर लौटें। |
| Request | New request, Start पर एक chip, या Collections / History से कोई entry load करना | request बनाएँ और भेजें। चार layouts, window के हिसाब से। |
| Protocol panels | request की context line का protocol menu | WebSocket, GraphQL, SSE, Socket.IO और MQTT का अपना-अपना panel है, चारों layouts में एक जैसा। |
| Tools | context line पर sliders icon (सिर्फ़ request स्क्रीन पर) | Environments, Mock Server, Cookies, Import और Settings खोलें। |
| Environments | Tools → Environments, या environment menu → Manage environments | सक्रिय environment चुनें; variables, secrets और globals edit करें। |
| Mock Server | Tools → Mock Server | लोकल server चालू करें (Pro), port और latency सेट करें, routes जोड़ें, उसका log पढ़ें। |
| Cookie Jar | Tools → Cookies | servers ने जो cookies सेव की हैं उन्हें देखें; सूची से हटाएँ। |
| Import Request | Tools → Import | cURL, Postman, Insomnia, OpenAPI या HAR text paste करें; OpenAPI से mock generate करें। |
| Import from project | Import → Import from project | खुले project में files के रूप में सेव collections का preview देखें और उन्हें import करें। |
| Request Settings | Tools → Settings | खुली request के लिए timeout, redirects, SSL, cookies और URL encoding। |
| Code Generator | ⋮ → Code Gen | request को 26 अलग-अलग outputs में code के रूप में देखें और copy करें। |
| Generated cURL | ⋮ → cURL Export | request को cURL command के रूप में copy करें। |
| Save to collection | ⋮ → Save, या landscape tablet पर Ctrl+S | कोई collection चुनें या नया नाम लिखें। |
| Collections | Start → Collections; फ़ोन पर ⋮ → Collections; टैबलेट पर folder icon | Search, create, request load, run, export, project में save, delete। |
| Export | Collections → किसी collection का ⋮ → Export | एक collection को पाँच formats में preview करें और copy करें। |
| History | Start → History; फ़ोन पर ⋮ → History | Search, filter, load, star, compare, mock के रूप में इस्तेमाल, clear। |
| Compare responses | History → किसी entry का ⋮ → Compare with…, फिर दूसरी entry | दो responses का Body और Headers diff पढ़ें। |
| Runner | Collections → ⋮ → Run | किसी collection की हर request चलाएँ, iterations या data file (Pro) के साथ। |
| Load Test | ⋮ → Load Test | खुली REST request को कई बार भेजें और latency percentiles देखें (Pro)। |
Start (शुरुआती स्क्रीन)
Start वह जगह है जहाँ module खुलता है। इसमें URL field, protocol picker या Tools बटन नहीं है: वे request स्क्रीन के हैं। चौड़ाई ऊँचाई से ज़्यादा होने पर यह दो columns दिखाता है।


Start क्या देता है
आप कर सकते हैं
- New request पर टैप करें। card छह protocols (REST · WS · GQL · SSE · IO · MQTT) की सूची दिखाता है और request स्क्रीन खोलता है।
- Collections या History पर टैप करें। हर card बताता है कि आपके पास कितने हैं, या Empty।
- ऊपर की live chips की पट्टी इस्तेमाल करें, जो सिर्फ़ तब दिखती है जब कुछ चल रहा हो: हर खुली request, port के साथ mock server, connected WebSocket, SSE, Socket.IO और MQTT sessions, एक load test या एक collection run। किसी एक पर टैप करने से आप उस पर लौट जाते हैं।
आप क्या नहीं कर सकते, और क्यों
- Start से protocol चुनना, URL लिखना, environment चुनना या Tools खोलना: इनमें से कुछ भी वहाँ नहीं है।जानबूझकर
- Start पर लौटकर live connections बंद करना: वे चलते रहते हैं, और chips इसीलिए हैं।जानबूझकर
Request (REST)
REST requests यहीं बनाई और भेजी जाती हैं। एक request में छह sections होते हैं: Params, Headers, Body, Auth, Scripts और Settings। बाकी protocols वही URL bar और context line इस्तेमाल करते हैं, और हर एक का अपना panel होता है (देखें दूसरे protocols)।
चार layouts
layout window के हिसाब से तय होता है, डिवाइस के हिसाब से नहीं, इसलिए split-screen वाले टैबलेट को फ़ोन वाला layout मिलता है।
| फ़ोन, portrait (600 dp से कम चौड़ाई) | URL bar के नीचे एक Request | Response स्विच और छह sections tabs के रूप में। भेजने पर स्क्रीन अपने-आप Response पर चली जाती है। |
| फ़ोन, landscape (600 dp या ज़्यादा चौड़ाई, 480 dp से कम ऊँचाई) | Section tabs और request व response के बीच खींचकर बदला जा सकने वाला divider। keyboard खुला हो तो response 48 dp की पट्टी में सिमट जाती है। |
| टैबलेट, portrait | ऊपर request और नीचे response, खींचने वाला divider और 30 / 50 / 70 % presets के साथ। Sections accordion के रूप में; Collections side drawer के रूप में (folder icon)। |
| टैबलेट, landscape (840 dp या ज़्यादा चौड़ाई, 480 dp या ज़्यादा ऊँचाई, और चौड़ाई ऊँचाई से ज़्यादा) | खींचने वाले dividers वाले तीन columns: Collections sidebar, खुली requests के tabs वाली request, और response। किसी divider को दो बार टैप करके उसे reset करें। |
URL bar, context line और ⋮ menu
URL लिखें (monospaced, auto-capitalisation के बिना)। अगर http:// या https:// नहीं है, तो ऐप https:// जोड़ देता है। उसके नीचे context line में protocol menu, environment menu, Tools icon और ⋮ menu होते हैं।
आप कर सकते हैं
- आठ में से method चुनें: GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS और TRACE, हर एक अपने रंग में। picker REST और GraphQL के लिए दिखता है।
- Send (काग़ज़ का हवाई जहाज़) पर टैप करें। request चलते समय यह Cancel request बन जाता है।
- protocol चुनें: REST, WebSocket, GraphQL, SSE, Socket.IO या MQTT।
- सक्रिय environment चुनें, या No environment; Manage environments editor खोलता है।
- ⋮ menu खोलें: New, Duplicate (नाम में “ (copy)” जोड़ता है), Save, cURL Export, Code Gen और Load Test। फ़ोन पर इसमें Home, Collections और History भी होते हैं।
आप क्या नहीं कर सकते, और क्यों
- GraphQL request का method चुनना: picker वहाँ है, पर panel हमेशा POST भेजता है।अभी नहीं
- request को नाम देना: इसके लिए कोई field नहीं है, इसलिए आपकी सेव की गई requests का नाम New Request होता है (import की गई requests अपना नाम रखती हैं)।अभी नहीं
Tools sheet
पाँच rows, हर एक में यह बताने वाली एक पंक्ति कि उसमें क्या है और दाईं ओर उसकी live स्थिति: सक्रिय environment, mock server (जैसे :8090 · 3 served) और सेव की गई cookies की संख्या। यह sheet सिर्फ़ request स्क्रीन से खुलती है, Start से कभी नहीं।
| Row | यह क्या खोलती है |
|---|---|
| Environments | Base URLs, tokens और variables |
| Mock Server | लोकल port पर पहले से तैयार responses serve करें |
| Cookies | servers ने इस डिवाइस पर क्या सेव किया है |
| Import | cURL, Postman, OpenAPI, HAR |
| Settings | Timeout, redirects, SSL |

Params और Headers
दोनों key–value सूचियाँ हैं और दोनों में एक ही editor है। tabs पर चालू rows की गिनती दिखती है (जैसे Headers 25)। नई request Content-Type: application/json header के साथ शुरू होती है।
आप कर सकते हैं
- Add param या Add header से rows जोड़ें, हर एक को उसके checkbox से चालू या बंद करें, क्रम बदलने के लिए खींचें और delete करने के लिए swipe करें।
- किसी row का detail खोलकर description जोड़ें या Secret value चालू करें: value interface में छिपी रहती है और export किए गए cURL और generate किए गए code में नहीं आती।
Key: valueरूप की lines paste करने के लिए Bulk edit इस्तेमाल करें।
आप क्या नहीं कर सकते, और क्यों
- सूची में से आम headers चुनना: header autocomplete नहीं है।अभी नहीं
- query parameters को अपने-आप percent-encode करवाना: वे URL में वैसे ही जुड़ते हैं जैसे आपने लिखे, और Encode URL switch का कोई असर नहीं होता।अभी नहीं
Body
आप कर सकते हैं
- type चुनें। None, JSON, Form URL-Encoded, Multipart Form और Raw Text chips हैं; XML, HTML, JavaScript, Binary और GraphQL More… के अंदर हैं। कुल दस, और हर भाषा में इनके नाम अंग्रेज़ी में हैं।
- JSON में: line numbers, live validation (Invalid JSON: …) और Beautify / Minify।
- Form URL-Encoded और Multipart Form में: key–value rows। Multipart rows text field या file field हो सकती हैं (Choose file, सिस्टम के file picker से)।
- Binary में: Select binary file। body type के रूप में GraphQL में: एक Query और Variables (JSON)।
- raw, JSON, XML, HTML और JavaScript bodies में और form fields में
{{variables}}इस्तेमाल करें: भेजते समय वे बदल दिए जाते हैं।
आप क्या नहीं कर सकते, और क्यों
- body editor में syntax highlighting पाना।जानबूझकर
- GraphQL body के लिए operation name सेट करना, या उसकी query और variables के अंदर
{{variables}}इस्तेमाल करना।अभी नहीं
Auth
Authentication type menu में type चुनें; सिर्फ़ उसी type का form दिखता है।
| No Auth | कुछ नहीं जोड़ा जाता। |
| Bearer Token | एक token और एक prefix (default Bearer)। |
| Basic Auth | एक username और एक password। |
| API Key | एक key name, एक value और वह कहाँ जाएगी: header या query parameter। |
| OAuth 2.0 | चार grant types, नीचे बताए गए हैं। |
| Digest Auth | एक username और एक password। realm, nonce और बाकी सब server के 401 challenge से आता है। |
| AWS Signature | Access key ID, Secret access key, Region (default us-east-1), Service और एक वैकल्पिक Session token। requests असली SigV4 से sign होती हैं। |
| Custom | एक header name और एक value। |
| Hawk Auth, NTLM Auth | Soon badge के साथ दिखते हैं। ये अभी कुछ नहीं करते। |

आप कर सकते हैं
- Grant type चुनें: Authorization Code, Client Credentials, Password Credentials या Implicit।
- Client Credentials के साथ Token URL, Client ID, Client Secret और Scope भरें, फिर Get token पर टैप करें।
- Authorization Code के साथ Open browser पर टैप करें, sign in करें, जिस address पर आप वापस भेजे गए हैं उससे
codeकी value copy करें, उसे Authorization code में paste करें और Exchange code पर टैप करें। - Password Credentials या Implicit के साथ token खुद Access token में paste करें: इसके लिए कोई बटन नहीं है।
- credentials में
{{variables}}इस्तेमाल करें। token को नज़र से दूर रखने के लिए उसे secret environment variable के रूप में सेव करें और यहाँ{{token}}लिखें।
आप क्या नहीं कर सकते, और क्यों
- OAuth redirect को अपने-आप पकड़वाना: module ऐप में वापस आने वाला link register नहीं कर सकता, इसलिए आप code paste करते हैं।जानबूझकर
- PKCE या refresh token इस्तेमाल करना।अभी नहीं
- OAuth 2.0 token को
Authorization: Bearer …header के अलावा कहीं और भेजना।अभी नहीं - Hawk या NTLM इस्तेमाल करना: इन्हें चुनने पर भेजते समय कुछ नहीं होता।अभी नहीं
- Auth में आप जो लिखते हैं उसे mask करना: इस स्क्रीन पर tokens और passwords सादे text में दिखते हैं।अभी नहीं
Scripts और assertions
Scripts section के तीन हिस्से हैं: Assertions (बिना code के), एक Pre-request Script और एक Test Script।
आप कर सकते हैं
- Add assertion से assertion जोड़ें: एक field (Status code, Response time, Header, Body (JSONPath) या Body size), एक operator (equals, does not equal, contains, does not contain, is greater than, is less than, exists, does not exist) और एक expected value। Assertions हमेशा चलते हैं, JavaScript engine की ज़रूरत नहीं।
- नौ Quick templates में से एक डालें: Status is 200, Status is 2xx, Response time < 500ms, Has JSON body, Body not empty, Has Content-Type, JSON schema valid, Body contains string, Array length > 0।
- pre-request और test scripts के लिए JavaScript लिखें। वे अलग-थलग engine (
androidx.javascriptengine) में चलते हैं, हर बार नया, इसलिए crash होने वाली script ऐप को नहीं गिरा सकती। pmका subset इस्तेमाल करें:pm.test(name, fn);pm.expect(value)के साथequal,include,above,below,within,an(type),emptyऔर उनकेnotरूप;pm.environment.getऔरpm.environment.set;pm.globals.get(सिर्फ़ पढ़ने के लिए);pm.request(method, url, headers, body: सिर्फ़ पढ़ने वाली copy); tests मेंpm.response(code,status,headers,responseTime,text(),json()औरto.have.status/header/jsonBody); औरconsole.log/info/warn/error।- भरोसा रखें कि
pm.environment.setसेव होता है: यह पहले मौजूदा global को अपडेट करता है, फिर सक्रिय environment के variable को, और नहीं तो सक्रिय environment में नया बनाता है (या कोई environment सक्रिय न हो तो global बनाता है)। - नतीजे response के Tests tab में और script का output Console में देखें।
आप क्या नहीं कर सकते, और क्यों
- Postman API के बाकी हिस्से इस्तेमाल करना:
pm.sendRequest,pm.variables,pm.collectionVariables,setNextRequest,requireऔरpm.globals.setमौजूद नहीं हैं, scripts request को बदल नहीं सकतीं और async नहीं है। इनकी ज़रूरत वाली Postman script console में Script error: … पर खत्म होती है।जानबूझकर - ऐसे डिवाइस पर scripts चलाना जिसमें आधुनिक WebView नहीं है: script को console में चेतावनी के साथ छोड़ दिया जाता है, और सिर्फ़ assertions चलते हैं।डिवाइस
- collection या folder की scripts चलवाना: वे import और सेव हो जाती हैं, पर सिर्फ़ request की अपनी scripts चलती हैं।अभी नहीं
- body को JSON schema के विरुद्ध validate करना: JSON schema valid template बस यह जाँचता है कि body JSON है।अभी नहीं
Settings
तीन settings Settings section में inline हैं; Request Settings sheet (Tools → Settings, “Applies to the open request only”) में पाँच हैं। वे request के साथ चलती हैं।
आप कर सकते हैं
- Timeout (ms) inline सेट करें (कोई भी संख्या, default 30000), या sheet में 5, 10, 15, 30, 60 या 120 s चुनें। एक ही value connect, read और write तीनों पर लागू होती है।
- Follow redirects और Verify SSL चालू या बंद करें।
- Enable Cookies और Encode URL चालू या बंद करें: सिर्फ़ sheet में।
आप क्या नहीं कर सकते, और क्यों
- proxy, client certificate या redirects की अधिकतम संख्या सेट करना: कोई स्क्रीन ये नहीं देती।अभी नहीं
- Encode URL से कुछ करवाना: switch है, पर भेजते समय उसे अनदेखा कर दिया जाता है।अभी नहीं
खुली requests, सेव करना और शॉर्टकट
landscape tablet layout में request column में कई खुली requests के tabs होते हैं, और ये shortcuts:
| शॉर्टकट | क्रिया |
|---|---|
Ctrl+Enter | भेजें (या streaming protocol में connect / disconnect) |
Ctrl+T | नया tab |
Ctrl+W | tab बंद करें |
Ctrl+S | collection में सेव करें |
आप कर सकते हैं
- New tab खोलें, tabs बदलें और ✕ से बंद करें। एक बिंदु बताता है कि request सेव होने के बाद बदली गई है; खाली request Untitled दिखती है।
- ⋮ → Save पर टैप करके Save to collection देखें: कोई collection चुनें (वह अपनी requests की संख्या दिखाता है) या नया नाम लिखकर Create पर टैप करें।
- ⋮ menu से Duplicate और New इस्तेमाल करें, और Generated cURL पढ़ने के लिए cURL Export तथा उसे Copy करें।
आप क्या नहीं कर सकते, और क्यों
- फ़ोन या portrait टैबलेट पर requests को tabs में खोलना: tabs सिर्फ़ landscape tablet layout में हैं, और shortcuts भी।
Ctrl+FयाCtrl+Kभी नहीं हैं।जानबूझकर - tabs बदलने पर response बनाए रखना: वह साफ़ हो जाती है।अभी नहीं
Response
Panel की चार अवस्थाएँ हैं: खाली (Send a request to see the response), loading (Sending request…), success और error। फ़ोन पर portrait में सारांश स्विच पर ही दिखता है, जैसे Response · 200 · 679 ms।

Status और tabs
आप कर सकते हैं
- status chip पढ़ें, जो range के हिसाब से रंगा होता है (2xx हरा, 3xx फ़िरोज़ी, 4xx नारंगी, 5xx लाल), साथ में कुल समय, size और content type।
- छह tabs के बीच बदलें, इसी क्रम में: Body, Headers (गिनती के साथ; कोई भी header copy करें), Cookies (name=value, domain और path, Secure और HttpOnly badges के साथ), Tests (assertion और script के नतीजे; खाली होने पर No tests ran for this response), Timeline और Console।
- Timeline पढ़ें: DNS, TCP, TLS, TTFB और Transfer, साथ में Total।
- Console पढ़ें: पूरे session का log (sends, scripts, mock server, connections) समय और level के साथ, LOG, INFO, WARN या ERROR।
आप क्या नहीं कर सकते, और क्यों
- protocol, remote IP या redirect chain देखना: panel इन्हें नहीं दिखाता।अभी नहीं
- देखना कि request क्यों fail हुई: network, TLS या timeout error पर panel सिर्फ़ 0 Error chip और खाली body दिखाता है। कारण Console log में जाता है।अभी नहीं
- console साफ़ करना: उसमें clear बटन नहीं है।अभी नहीं
Body
आप कर सकते हैं
- नीचे दाईं ओर के floating बटन से view बदलें: Pretty, Raw या Preview। Copy उसके बगल में है।
- Pretty के साथ, दो filters वाले collapsible JSON tree में घूमें, Search keys… और JSONPath filter · $.a.b[0].c (एक सटीक path; कुछ न मिलने पर No match for that path)।
- किसी node का ⋮ menu खोलें: Copy value, Copy path और Save as variable (environment और नाम चुनें)।
- Raw के साथ, monospaced text पढ़ें; 512 K characters से बड़ी bodies virtualised list इस्तेमाल करती हैं।
- Preview के साथ,
text/htmlको JavaScript बंद किए WebView में render होते देखें; बाकी हर type पर No preview available for this content type दिखता है।
आप क्या नहीं कर सकते, और क्यों
- XML या HTML को pretty-print करवाना: सिर्फ़ JSON format होता है, बाकी सब जैसा मिला वैसा दिखता है।अभी नहीं
- image का preview देखना: preview को image के bytes कभी मिलते ही नहीं।अभी नहीं
- body में highlighted matches के साथ search करना, ऊपर या नीचे जाना, या response को file में share या सेव करना।अभी नहीं
दो responses की तुलना
तुलना History से शुरू होती है, इस panel से नहीं: किसी entry का ⋮ → Compare with…, फिर दूसरी entry। steps के लिए History देखें।
दूसरे protocols
request स्क्रीन की context line में protocol चुनें। नीचे का हर panel request area में बैठता है; address और Send (जो streaming वाले protocols में connect करता है) URL bar में ही रहते हैं। GraphQL के endpoint URL को छोड़कर किसी में भी {{variables}} बदले नहीं जाते। सादा http:// और ws:// सिर्फ़ localhost, 127.0.0.1 और 10.0.2.2 तक पहुँचते हैं; बाकी सबके लिए HTTPS या wss:// चाहिए।
GraphQL
आप कर सकते हैं
- endpoint लिखें और Fetch Schema पर टैप करें (एक standard introspection POST)। Schema दिखाता है कि कितने types मिले; हर type अपने fields, उनके types और argument की गिनती के साथ खुलता है, जैसे
2 arg(s)।__से शुरू होने वाले types छिपे रहते हैं। - Query लिखें और collapsible section में Variables (JSON); भेजें; जवाब सामान्य response panel में पढ़ें। queries और mutations दोनों HTTP POST के रूप में जाती हैं।
आप क्या नहीं कर सकते, और क्यों
- इस panel से operation name, headers या auth सेट करना: यह सिर्फ़
Content-Type: application/jsonभेजता है। auth के लिए GraphQL body वाली REST request इस्तेमाल करें।अभी नहीं - subscriptions इस्तेमाल करना: explorer Subscription type दिखाता है, पर सब कुछ HTTP POST से जाता है,
graphql-wstransport नहीं है।अभी नहीं - argument के नाम देखना: सिर्फ़ उनकी गिनती दिखती है।अभी नहीं
WebSocket
ws:// या wss:// लिखें (scheme के बिना wss:// जोड़ दिया जाता है) और connect करें। कोई read timeout नहीं है: connection तब तक खुला रहता है जब तक आप disconnect न करें या server उसे बंद न कर दे।
आप कर सकते हैं
- state देखें: CONNECTING, CONNECTED, DISCONNECTING, DISCONNECTED या ERROR।
- Message लिखें और connect होने पर भेजें।
- chat जैसा log पढ़ें (भेजे गए दाईं ओर, मिले हुए बाईं ओर, समय के साथ) और उसे Clear messages से खाली करें।
आप क्या नहीं कर सकते, और क्यों
- headers या subprotocols जोड़ना, अपने-आप reconnect करना या message templates सेव करना।अभी नहीं
- binary messages भेजना या पढ़ना: सिर्फ़ text।अभी नहीं
- URL में
{{variables}}इस्तेमाल करना।अभी नहीं
SSE
stream का URL लिखें और connect करें। ऐप Accept: text/event-stream के साथ GET भेजता है और कोई read timeout नहीं लगाता।
आप कर सकते हैं
- state (CONNECTING, CONNECTED, DISCONNECTED या ERROR) और counter देखें, जैसे
12 events। - event log पढ़ें: एक type badge,
id: …औरdataके पहले 300 characters।
आप क्या नहीं कर सकते, और क्यों
- headers भेजना, event type से filter करना, अपने-आप reconnect करना या server की
retry:value मानना।अभी नहीं - हर event का समय या
retryदेखना, याLast-Event-IDसे फिर शुरू करना: id रखी जाती है, पर न दिखती है न भेजी जाती है।अभी नहीं {{variables}}, cookie jar या Verify SSL इस्तेमाल करना: इनमें से कुछ भी यहाँ लागू नहीं होता।अभी नहीं
Socket.IO
आप कर सकते हैं
- URL लिखें (जैसे
http://localhost:3000) और एक Namespace (default/, जो कुछ नहीं जोड़ता; कोई और नाम URL में जुड़ जाता है)। - Auto-reconnect चालू या बंद करें (default रूप से चालू)।
- किसी event name को सुनने के लिए Add listener और JSON payload के साथ event भेजने के लिए Emit इस्तेमाल करें: यह असली JSON value (object, array या scalar) के रूप में जाता है, या parse न हो तो text के रूप में।
- chat जैसा log पढ़ें, जिसमें हर bubble पर उसका event name होता है, और उसे साफ़ करें।
आप क्या नहीं कर सकते, और क्यों
- headers,
auth, query या transport सेट करना, listener हटाना, या एक connection पर एक से ज़्यादा namespace इस्तेमाल करना।अभी नहीं - जानना कि यह किन Socket.IO server versions से बात करता है: client आधिकारिक
socket.io-client2.1.2 है, और वही library तय करती है।थर्ड पार्टी
MQTT
URL bar में host या host:port लिखें। port न हो तो ऐप 1883 इस्तेमाल करता है, या 8883 अगर address लिखते समय Use TLS चालू था।
आप कर सकते हैं
- Use TLS चालू करें (सिस्टम के certificates), और Client ID (
pocketcode-के बाद आठ characters के रूप में generate होता है), Username और Password सेट करें (सिर्फ़ तब भेजे जाते हैं जब username खाली न हो; field mask रहता है, show/hide वाली आँख के साथ)। - QoS 0 (At most once), 1 (At least once) या 2 (Exactly once) के साथ किसी Topic को Subscribe करें; Subscriptions सूची उन्हें दिखाती है।
- text Payload और QoS के साथ Publish topic पर Publish करें।
- भेजे और मिले messages पढ़ें, topic के हिसाब से समूहित।
आप क्या नहीं कर सकते, और क्यों
- MQTT version चुनना: client सिर्फ़ MQTT 5 बोलता है, इसलिए सिर्फ़ 3.1.1 सपोर्ट करने वाला broker connection ठुकरा सकता है।अभी नहीं
- retain flag के साथ publish करना।अभी नहीं
- unsubscribe करना, will, keep-alive या clean-session सेट करना, MQTT 5 properties, अपने TLS certificates, या WebSocket पर connect करना।अभी नहीं
gRPC (इस वर्शन में छिपा हुआ)
कोड में एक gRPC panel है, पर यह वर्शन उसे छिपा देता है: gRPC न New request card पर है और न protocol menu में। panel को पूरी protobuf-java library चाहिए, जिसे ऐप बाहर रखता है ताकि Firestore चलता रहे, इसलिए वह अभी Android पर काम नहीं कर सकता। जब वह काम करेगा, तब वापस आएगा।
Collections
Collection सेव की गई requests को समूहित करता है। Collections एक अलग स्क्रीन है, किसी साझा library का tab नहीं: फ़ोन पर यह Start या ⋮ menu से बिना title bar के खुलता है (सिस्टम gesture से वापस जाएँ); टैबलेट पर portrait में side drawer और landscape में fixed sidebar होता है।

आप कर सकते हैं
- नाम से Search collections करें।
- New collection (गोल बटन) से नया बनाएँ। Free पर पहले से एक collection हो तो इसके बजाय API Tester Pro window खुलती है।
- किसी collection को खोलकर उसकी requests की सूची देखें (रंग में method, फिर नाम या URL) और किसी पर टैप करके उसे load करें: आप request स्क्रीन पर लौट जाते हैं।
- collection का ⋮ menu खोलें: Run (Pro badge के साथ), Export, Save to project और Delete। Delete कोई confirmation नहीं माँगता।
- खुली request को Save to collection से किसी collection में सेव करें।
- Save to collection में नया नाम लिखने से collection वहीं बन जाता है। Free पर भी एक की वही सीमा लागू होती है: पहले से एक हो तो dialog बंद हो जाता है और API Tester Pro window खुलती है।
आप क्या नहीं कर सकते, और क्यों
- collections या requests का नाम बदलना, उन्हें ले जाना या क्रम बदलना, या folders बनाना: इसके लिए कोई स्क्रीन नहीं है।अभी नहीं
- folder खोलना: folders (जो imports और project files के साथ आते हैं) name (n) row के रूप में दिखते हैं जो कोई जवाब नहीं देती। आप उन्हें यहाँ खोल या उनकी requests नहीं खोल सकते, हालाँकि runner उनमें से गुज़रता है।अभी नहीं
- collection या folder की auth, headers या scripts लागू करवाना: वे import, सेव और export होती हैं, पर भेजने और चलाने में सिर्फ़ वही इस्तेमाल होता है जो request में ही है।अभी नहीं
- collection के variables edit करना: वे सिर्फ़ imports और project files से आते हैं, और तब इस्तेमाल होते हैं जब request उसी collection से load हुई हो।अभी नहीं
- Free पर एक से ज़्यादा collection रखना: New collection, Save to collection में नया नाम और import, तीनों API Tester Pro window खोलते हैं।Pro
Environments और variables
Environment नाम वाले variables का एक सेट है, और एक समय में एक ही सक्रिय हो सकता है। variable को {{name}} के रूप में लिखें।

Environments sheet
आप कर सकते हैं
- इसे Tools → Environments से, या environment menu → Manage environments से खोलें। यह sheet screenshots को रोकती है।
- chips से सक्रिय environment चुनें (None या आपका कोई एक); नीचे के cards edit करते हैं।
- New environment पर टैप करें (एक dialog नाम पूछता है), environment delete करें (बिना confirmation) और देखें कि कौन-सा Active है।
- variables को दो columns, KEY और Value, में edit करें और Add variable से और जोड़ें।
- variable को secret के रूप में lock करें: उसकी value बिंदुओं से छिपी रहती है, आँख उसे दिखाती है, और बाहर निकलने पर वह फिर छिप जाती है।
- Global Variables खोलें (collapsible) और Add global variable इस्तेमाल करें: कोई भी environment सक्रिय हो, ये दिखते रहते हैं।
- response से variable बनाएँ: JSON tree में किसी node का ⋮ → Save as variable।
आप क्या नहीं कर सकते, और क्यों
- हर variable के लिए scope चुनना, initial value edit करना या environment का रंग चुनना: editor में सिर्फ़ environment और global variables हैं।अभी नहीं
- एक अकेला environment import या export करना: Postman environments import नहीं हो सकते, और Insomnia का import file के सभी environments के variables को collection variables की एक ही list में समतल कर देता है।अभी नहीं
- Free पर दूसरा environment रखना: उसे बनाने पर API Tester Pro window खुलती है।Pro
variables कहाँ बदले जाते हैं
| इनमें बदले जाते हैं | URL, query params के names और values, headers, raw / JSON / XML / HTML / JavaScript bodies, form-urlencoded fields, multipart bodies के text fields और auth credentials (bearer token, Basic, API Key, OAuth 2.0 access token, Custom, Digest, AWS)। |
| इनमें नहीं बदले जाते | GraphQL body (query और variables), streaming protocols (WebSocket, SSE, Socket.IO, MQTT), cookies और bearer prefix। |
| प्राथमिकता | पहले dynamic variables, फिर runner की data file की एक row, फिर collection के variables, फिर सक्रिय environment, फिर globals: जो सबसे ख़ास हो वही जीतता है। |
Dynamic variables
{{$guid}} (साथ ही {{$randomUUID}}), {{$timestamp}} (seconds में), {{$isoTimestamp}}, {{$randomInt}} (0 से 1000, या {{$randomInt(min,max)}}), {{$randomEmail}} (हमेशा example.com पर), {{$randomFirstName}} और {{$randomLastName}}। हर बार नया generate होता है; अज्ञात नाम जैसा लिखा है वैसा ही रहता है।
{{name}} के रूप में रहता है (secret row •••••••• दिखाती है)। लेकिन request भेजते समय असली value network पर जाती है: जाना ही पड़ता है, वरना auth काम नहीं करेगा।History
History आपकी भेजी हुई requests को उनकी responses के साथ रखती है। यह एक अलग स्क्रीन है, बिना title bar के।

आप कर सकते हैं
- URL या नाम से Search history करें, और Starred तथा method से filter करें (सिर्फ़ GET, POST, PUT और DELETE मिलते हैं)।
- Today, Yesterday, This week (पिछले सात दिन) और Older के अंतर्गत समूहित entries पढ़ें, हर एक में method, status code, समय और घंटा।
- किसी entry पर टैप करके request और उसकी सेव की गई response load करें; उसे star से चिह्नित करें।
- किसी entry का ⋮ menu खोलें: Compare with… और Use as mock (entry में response न हो तो दोनों धुँधले)।
- Clear all history पर टैप करें। यह कोई confirmation नहीं माँगता।
आप क्या नहीं कर सकते, और क्यों
- 200 से ज़्यादा entries रखना: इसके बाद सबसे पुरानी हट जाती हैं, Free और Pro दोनों पर।जानबूझकर
- Free पर 10 entries से ज़्यादा history सेव करना: नई requests तब तक सेव नहीं होतीं जब तक आप उसे clear न करें।Pro
- date range या status code से filter करना, या एक अकेली entry delete करना।अभी नहीं
दो responses की तुलना
- 1किसी entry पर ⋮ टैप करें और Compare with… चुनें। एक banner कहता है Pick another entry with a response to compare, साथ में Cancel।
- 2response वाली दूसरी entry पर टैप करें। Compare responses Body और Headers के साथ खुलता है, जिसमें जोड़ी गई, हटाई गई और अपरिवर्तित lines दिखती हैं (मेल खाने पर No differences)।
- 3diff line-by-line होता है; बहुत बड़ी bodies position-by-position तुलना पर लौट जाती हैं।
Mock के रूप में इस्तेमाल
⋮ → Use as mock उस entry से mock server में एक route जोड़ता है: उसका method, URL का सिर्फ़ path, और सेव की गई response का status code और body। इसके लिए Pro नहीं चाहिए; server चालू करने के लिए चाहिए।
Collection runner
Runner किसी collection की हर request को क्रम से भेजता है, folders समेत, सक्रिय environment और globals के साथ, और हर iteration के लिए pass या fail बताता है। यह Pro feature है।
आप कर सकते हैं
- इसे Collections → ⋮ → Run से खोलें। header पर Runner लिखा होता है, और back gesture Collections पर वापस ले जाता है।
- collection चुनें (Pick a collection to run) और − तथा + से Iterations सेट करें (1 से 100)।
- Data file चुनें (Pick file; CSV या JSON)। उसकी rows की संख्या iterations की जगह ले लेती है और stepper को बंद कर देती है; Remove data file इसे पलट देता है। CSV में header line चाहिए (commas और double quotes, multiline fields नहीं); JSON flat objects का array होना चाहिए। हर row
{{column}}variables देती है और collection, environment व globals के variables पर भारी पड़ती है। - Run collection पर टैप करें, या Cancel run। status Idle, Running, Completed, Failed या Cancelled दिखता है; संख्याएँ Requests, Tests (passed / total) और Duration दिखाती हैं; हर iteration अपनी requests को method, code, समय और passed / total के साथ सूचीबद्ध करती है।
आप क्या नहीं कर सकते, और क्यों
- इसे Free पर चलाना: Run runner खोलता है, पर उसके ऊपर API Tester Pro window आ जाती है और Run collection कुछ नहीं चलाता।Pro
- requests के बीच delay जोड़ना, पहली error पर रुकना, responses सेव करना या runs के बीच variables बनाए रखना।अभी नहीं
- नतीजे रखना या export करना: वे सेव नहीं होते।अभी नहीं
- network errors के लिए Failed पर भरोसा करना: इसका मतलब है कि कोई assertion fail हुआ, इसलिए जो request error देती है और जिसमें कोई assertion नहीं है, वह run को Failed चिह्नित नहीं करती।अभी नहीं
Load test
Load Test खुली REST request को कई बार भेजता है और latency का सारांश देता है। यह Pro feature है। कई workers एक ही समय पर requests भेजते हैं, इसलिए आप parallel load नापते हैं, किसी एक client की latency नहीं।
आप कर सकते हैं
- इसे ⋮ → Load Test से खोलें। TARGET उस समय load की गई request का method और URL है; कुछ भी खुला न हो तो No request selected लिखा होता है।
- Requests (पाँच अंकों तक), Concurrency (चार) और Ramp-up (s) (तीन) सेट करें, फिर Start पर टैप करें, या Cancel।
- Concurrency (default 10) से तय करें कि एक साथ कितने workers भेजें। वे Requests आपस में बाँट लेते हैं, और हर worker पिछली request का जवाब आते ही अगली भेजता है। एक साथ ज़्यादा से ज़्यादा 100, और Requests से ज़्यादा कभी नहीं; खाली या 0 का मतलब एक बार में एक।
- Ramp-up (s) से workers की शुरुआत उतने सेकंड में फैला दें: n में से k-वाँ worker (k 0 से गिना जाता है) ramp-up × k / n सेकंड बाद शुरू होता है। 0 होने पर सब साथ शुरू होते हैं।
- progress (
n / N requests); p50, p90, p95 और p99; avg, min और max; req/s; Success और Failed; Status code distribution; और 20 तक error messages पढ़ें।
आप क्या नहीं कर सकते, और क्यों
- एक साथ 100 से ज़्यादा requests भेजना: Concurrency की सीमा 100 है, और Requests की संख्या से ज़्यादा भी नहीं।जानबूझकर
- कुल अवधि या think time सेट करना: इनके लिए कोई field नहीं हैं।अभी नहीं
- streaming protocol को test करना: सिर्फ़ load की गई REST request।अभी नहीं
- इसे Free पर शुरू करना: स्क्रीन खुलती है, पर Start API Tester Pro window खोलता है और कोई request नहीं जाती। इस entry पर badge नहीं होता।Pro
Mock server
ऐप के अंदर चलने वाला एक छोटा HTTP server जो तैयार responses से जवाब देता है, असली API आने से पहले client बनाने के काम आता है। इसे चालू करना Pro feature है; routes सेट करना मुफ़्त है।

आप कर सकते हैं
- Tools → Mock Server खोलें। इसे header से चालू करें: subtitle में
http://127.0.0.1:<port>दिखता है, या Stopped। - Port (default 8090; 0 का मतलब सिस्टम चुनेगा; चलते समय locked) और Latency (ms) (0 से 60,000) सेट करें, जो हर जवाब में जुड़ती है।
- सूचना पढ़ें Listens on loopback only — reachable from this device, not from the network.
- Add route पर टैप करें। New Mock Route method (GET, POST, PUT या DELETE), Path, Status code और Response body पूछता है। हर route में on/off switch और delete होता है।
- serve की गई requests का log पढ़ें (sheet आख़िरी 30 दिखाती है और 200 रखती है): समय, code,
METHOD pathऔर जो route मेल खाया, या no route matched। Clear all उसे खाली करता है। - routes दूसरी जगहों से भी पाएँ: OpenAPI import (Generate mock from this OpenAPI) और History में Use as mock।
आप क्या नहीं कर सकते, और क्यों
- route बनाने के बाद उसे edit करना, या dialog से उसके headers, delay या priority सेट करना: आप उसे सिर्फ़ चालू या बंद कर सकते हैं, या delete कर सकते हैं। Imports इन fields को default values से भर देते हैं।अभी नहीं
- module बंद करने पर routes और log रखना: वे memory में रहते हैं, और server स्क्रीन के साथ बंद हो जाता है।अभी नहीं
- इसे किसी दूसरे डिवाइस से या HTTPS पर पहुँचना: यह सिर्फ़ loopback पर सुनता है, TLS के बिना, इसलिए आपका test data किसी कैफ़े के Wi-Fi पर उजागर नहीं होता।जानबूझकर
- इसे Free पर चालू करना: switch बंद ही रहता है और API Tester Pro window खुलती है।Pro
यह जवाब कैसे देता है
127.0.0.1 पर HTTP/1.1, हर request के लिए एक connection। route method और path से मेल खाता है: :name एक segment से मेल खाता है, * एक segment और ** बाकी सब; सबसे ऊँची priority जीतती है, फिर सबसे ख़ास; आख़िर का slash अनदेखा किया जाता है। query string और request body अनदेखी की जाती हैं। मेल न खाने पर आपको 404 मिलता है, जिसकी JSON body में No mock route matched लिखा होता है।
Cookies
Cookie jar असली है: यह responses के Set-Cookie headers को सेव करता है और उन्हें domain (subdomains समेत), path prefix, expiry और Secure (सिर्फ़ HTTPS) के हिसाब से वापस भेजता है। यह डिवाइस के database में रहता है। एक request के लिए इसे Settings में Enable Cookies से बंद करें।
आप कर सकते हैं
- Tools → Cookies खोलें। Cookie Jar का subtitle उन्हें गिनता है (जैसे
3 stored); हर cookie अपना name, value,Secureहो तो ताला, HttpOnly, domain और path दिखाती है। - ✕ से एक हटाएँ, या Clear all पर टैप करें।
- किसी एक response की cookies उसके Cookies tab में पढ़ें।
आप क्या नहीं कर सकते, और क्यों
- cookie को हाथ से जोड़ना या edit करना।अभी नहीं
- सेव की गई cookies को हमेशा के लिए delete करना: ✕ और Clear all सिर्फ़ दिखाई जा रही सूची को खाली करते हैं, डिवाइस पर रखी copy मिटती नहीं, इसलिए वे फिर दिख सकती हैं।अभी नहीं
- host-only cookies और domain cookies में फ़र्क़ करना: jar दोनों को एक जैसा मानता है।अभी नहीं
Code generate करना
⋮ → Code Gen Code Generator खोलता है: कोई target चुनें, code को उसके file extension के साथ पढ़ें और उसे Copy करें। उसी menu का cURL Export Generated cURL दिखाता है।
आप कर सकते हैं
- 27 targets में से चुनें, जिनसे 26 अलग-अलग outputs मिलते हैं (cURL और Shell — cURL एक ही command हैं): cURL, HTTPie, Wget; JavaScript (Fetch, Axios, XHR, jQuery); TypeScript (Fetch); Python (Requests, http.client); Java (OkHttp, HttpURLConnection, HttpClient 11+); Kotlin (OkHttp, Ktor); Swift (URLSession); Go (net/http); PHP (cURL, Guzzle); Ruby (Net::HTTP); C# (HttpClient, RestSharp); Rust (reqwest); Dart (http); R (httr); PowerShell; Shell (cURL)।
- method, चालू query params वाला URL, चालू headers और body पाएँ (raw, JSON, XML, HTML, JavaScript, form-urlencoded, या
{"query":…,"variables":…}के रूप में GraphQL)।{{variables}}सक्रिय environment से resolve होते हैं, secrets को छोड़कर, जो{{name}}ही रहते हैं; secret rows••••••••दिखाती हैं।
आप क्या नहीं कर सकते, और क्यों
- generated code में auth पाना, cURL को छोड़कर: बाकी हर target उसे छोड़ देता है। cURL में Bearer, Basic, Digest, Custom और header-based API Key जुड़ते हैं, पर OAuth 2.0 या AWS Signature नहीं।अभी नहीं
- Multipart या Binary requests की body पाना: वह खाली निकलती है।अभी नहीं
Import और export
Import Tools → Import के अंदर है। Export हर collection के लिए (Collections → ⋮ → Export) और हर request के लिए (cURL Export) है।
Import
आप कर सकते हैं
- Import Request में Format चुनें: cURL, Postman (v2.1), Insomnia, OpenAPI / Swagger, HAR File या OpenAPI YAML। text paste करें और Import पर टैप करें; file picker नहीं है।
- उम्मीद रखें कि cURL खुली request को बदल देगा, और बाकी पाँच पूरा collection बना देंगे, जिसकी सूचना Imported "name" — N requests या Import failed: … के रूप में आती है।
- OpenAPI format के साथ, हर method और path के लिए एक mock route जोड़ने हेतु Generate mock from this OpenAPI पर निशान लगाएँ।
- files के रूप में सेव collections पढ़ने के लिए Import from project पर टैप करें (देखें प्रोजेक्ट में सेव करना)।
आप क्या नहीं कर सकते, और क्यों
- Postman environment import करना (सिर्फ़ collections), या file से import करना: आप text paste करते हैं।अभी नहीं
- Free पर दूसरा collection import करना: sheet बंद हो जाती है और API Tester Pro window खुलती है।Pro
- देखना कि cURL import क्यों fail हुआ: error सिर्फ़ console में जाती है।अभी नहीं
हर format क्या लाता है
| Format | Import होता है |
|---|---|
| cURL | आम flags: -X, -H, -d, --data-urlencode, -F, --data-binary, -u, --digest, --ntlm, --proxy, --connect-timeout, -k और -L। --max-redirs नहीं पढ़ा जाता। --proxy भेजते समय लागू होता है, पर कोई स्क्रीन उसे नहीं दिखाती। |
| Postman (v2.1) | Folders, requests, auth, collection variables और pre-request व test scripts। token से आगे की OAuth 2.0 state, response[] और protocolProfileBehavior अनदेखे किए जाते हैं। |
| Insomnia | Groups और requests, और file के सभी environments के variables, जो collection variables की एक ही list में समतल कर दिए जाते हैं (एक ही नाम दोबारा आए तो पहला मिला हुआ इस्तेमाल होता है)। grpc_request, unit tests, specs और scripts अनदेखे किए जाते हैं। |
| OpenAPI / Swagger, OpenAPI YAML | JSON या YAML में OpenAPI 3.0 और Swagger 2.0: हर method और path के लिए एक request, पहले tag के हिसाब से folders में समूहित। $ref resolve नहीं होता और security नहीं पढ़ी जाती। YAML को एक छोटा built-in parser पढ़ता है: anchors, aliases या multiple documents नहीं। |
| HAR File | HAR 1.2: हर entry के लिए एक request, folders के बिना और responses के बिना। |
Export
आप कर सकते हैं
- Export "name" में Postman Collection v2.1, Insomnia Export, OpenAPI 3.0, HAR Archive या Markdown Documentation चुनें, preview पढ़ें और उसे Copy करें (Copied to clipboard)। Markdown आपकी history से response examples जोड़ता है, method और URL से मिलाकर, सबसे नया जीतता है।
आप क्या नहीं कर सकते, और क्यों
- export को file में सेव करना या share करना: आप उसे सिर्फ़ copy कर सकते हैं।अभी नहीं
प्रोजेक्ट में सेव करना
एक collection को खुले project के अंदर सादी JSON files के रूप में mirror किया जा सकता है, ताकि आप उसे pull request में review कर सकें। ऐप का database ही सच्चाई का स्रोत रहता है: files एक copy हैं जो आप एक टैप से हाथ से लिखते हैं, और आपके लिए कुछ भी commit नहीं होता।
सेव करना
- 1कोई project खोलें। उसके बिना Collections का ⋮ item Open a project to save collections as files दिखाता है और सिर्फ़ समझाता है।
- 2Collections → ⋮ → Save to project पर टैप करें। ऐप
.pocketcode/api/<collection>/लिखता है और कहता है Saved to .pocketcode/api/ — N files. Commit them with the app's Git manager to keep the change. - 3बदलाव रखना हो तो files को ऐप के Git manager से commit करें।
_collection.jsonमें collection की id, नाम, auth, headers, scripts और variables होते हैं। हर folder एक sub-directory है जिसमें_folder.jsonहोती है। हर request एक<name>.jsonहै, जिसका slug उसके नाम से बनता है, lowercase letters, digits और dashes में (टकराव पर-2,-3; कुछ न बचे तोuntitled)।- दोबारा सेव करने पर वह directory साफ़ होकर database से फिर लिखी जाती है, इसलिए files में हाथ से की गई edits overwrite हो जाती हैं। Environments नहीं लिखे जाते।
- Secrets नहीं लिखे जाते। लिखने से पहले ऐप ये values खाली कर देता है: auth की (bearer token, passwords, API key value, OAuth 2.0 access token और client secret, AWS keys और session token आदि); Secret value चिह्नित या secret जैसे नाम वाली rows की (token, secret, key, password, passphrase, auth, cookie, credential), यानी headers, query params, form fields और collection variables में; secret जैसे नाम वाले URL query params और
user:password@वाले URL के password की; और proxy password तथा certificate passphrase की। ढाँचा बना रहता है: auth type, header names, user names, URLs। {{variable}}reference (अकेला याBearerके बाद) secret नहीं है और जैसा है वैसा लिखा जाता है। tokens को secret environment variable में रखें और request में{{token}}लिखें।
आप कर सकते हैं
- files को pull request में review करें और commit करें: auth values, secret rows और secret जैसे नाम वाले headers, params और form fields खाली सेव होते हैं, इसलिए files collection का ढाँचा दिखाती हैं, आपके credentials नहीं।
आप क्या नहीं कर सकते, और क्यों
- files में raw request body या script के अंदर secret को बाहर रखना: दोनों वैसे ही लिखे जाते हैं जैसे टाइप किए गए, इसलिए वहाँ paste किया token files के साथ commit हो जाता है।जानबूझकर
Project से import
आप कर सकते हैं
- Import sheet से Import from project खोलें (कोई project खुला न हो तो यह Open a project to import collections from files समझाता है)।
.pocketcode/api/के अंदर कोई folder चुनें और preview पढ़ें, जो आपके data को नहीं छूता: New collection "name" — N requests, या This will replace "name" (N current requests) with M requests from files (जब_collection.jsonकीidकिसी मौजूदा collection से मेल खाए तो यह replacement होता है), साथ में N file(s) skipped due to errors।- Import या Replace (लाल) से confirm करें, या Cancel: कुछ भी अपने-आप लागू नहीं होता।
- Replace करने पर आपके मौजूदा secrets बने रहते हैं: files से खाली आई value उसी
idवाले local collection की value को overwrite नहीं करती (वही auth type, वही row)। नया collection इन values को खाली लेकर शुरू होता है।
आप क्या नहीं कर सकते, और क्यों
- Free पर, जब आपके पास पहले से एक collection हो, files से नया collection import करना: API Tester Pro window खुलती है। मौजूदा को replace करना हमेशा allowed है।Pro
Free और Pro
API Tester लगभग पूरा मुफ़्त है: छहों protocols, पूरा editor, scripts और assertions, response tools, cookies, import और export, code generation, project files और responses की तुलना। Pro तीन tools जोड़ता है और तीन सीमाएँ हटाता है। Free पर कोई रोकी गई action एक ही window खोलती है, API Tester Pro, जिसका text action के साथ बदलता है (runner, mock server या load test)। उसमें Collection Runner, Mock server on your phone और Load testing with concurrency लिखे होते हैं, और Unlock API Tester Pro तथा Not now बटन होते हैं। Unlock API Tester Pro API Tester को बंद करके Pro स्क्रीन खोलता है।
| Feature | Free | Pro |
|---|---|---|
| Collections | 1। दूसरा बनाना (New collection या Save to collection में नया नाम) या import करना API Tester Pro window खोलता है। | कोई सीमा नहीं |
| Environments | 1 (एक Default पहले से होता है)। दूसरा बनाने पर API Tester Pro window खुलती है। | कोई सीमा नहीं |
| Request history | 10 entries। इसके बाद नई requests तब तक सेव नहीं होतीं जब तक आप Clear all history न करें; एक संदेश कहता है The free plan keeps only the last 10 history entries. This request was not saved. | आख़िरी 200 (पुरानी delete हो जाती हैं) |
| Mock server: उसे चालू करना | नहीं। switch बंद ही रहता है और API Tester Pro window खुलती है; routes फिर भी सेट किए जा सकते हैं। | हाँ |
| Collection runner | नहीं। Run उसे खोलता है, पर उसके ऊपर API Tester Pro window आ जाती है और Run collection कुछ नहीं चलाता; collection के ⋮ menu पर Pro badge होता है। | हाँ |
| Load test | नहीं। Start API Tester Pro window खोलता है; entry पर badge नहीं होता। | हाँ |
| बाकी सब: छहों protocols, scripts, response tools, cookies, import और export, code generation, project files, तुलना, tabs | हाँ | हाँ |
प्राइवेसी और सुरक्षा
- क्या कहाँ सेव होता है। Collections, environments, history (हर entry अपनी request और response के साथ) और cookies आपके डिवाइस पर ऐप के database में सेव होते हैं।
- History requests को वैसे ही रखती है जैसे आपने लिखीं।
{{token}}reference reference ही रहता है; जो token आपने सीधे Auth या किसी header में लिखा, वह वैसा ही सेव होता है जैसा लिखा गया। - Secrets। secret चिह्नित variable या row interface में mask रहती है, export किए गए cURL और generate किए गए code में
{{name}}या••••••••के रूप में रहती है, और Cloud Sync उसे कभी upload नहीं करता। असली value तब भेजी जाती है जब आप request भेजते हैं। - Project files (Save to project) बिना secrets के लिखी जाती हैं: प्रोजेक्ट में सेव करना में बताई गई values खाली सेव होती हैं, और
{{variable}}references बने रहते हैं। raw body और scripts वैसे ही लिखे जाते हैं जैसे टाइप किए गए। - Cloud Sync (Pro) अभी collections और environments sync नहीं करता (यह विकल्प रोका गया है), इसलिए वे आपके डिवाइस पर ही रहते हैं।
- सादा HTTP सिर्फ़ आपके अपने डिवाइस के लिए।
http://औरws://सिर्फ़localhost,127.0.0.1और10.0.2.2(Android emulator का host) के लिए काम करते हैं; बाकी सब HTTPS याwss://होना चाहिए।192.168.x.xजैसा LAN address सादे HTTP पर blocked है: HTTPS या tunnel इस्तेमाल करें। - Certificates। सिर्फ़ सिस्टम की certificate authorities पर भरोसा किया जाता है, उन पर नहीं जो आपने खुद install कीं। Verify SSL बंद होने पर कोई भी certificate और host name स्वीकार हो जाता है।
- Mock server सिर्फ़ loopback पर सुनता है: आपके network पर कोई और उस तक नहीं पहुँच सकता।
- Workflows को इस स्क्रीन से भेजी गई हर response का URL, method, status और समय मिलता है, body या headers कभी नहीं।
- AI assistant इस module को खोले बिना इसके ज़रिए requests भेज सकता है; उसे response body के ज़्यादा से ज़्यादा 4096 characters मिलते हैं और वह PocketCode के अपने backend को target नहीं कर सकता।
सीमाएँ
आज जो कुछ नहीं है, एक जगह पर। “अभी नहीं” का मतलब है कि code में उसके लिए जगह है पर कोई स्क्रीन उसे नहीं देती।
- gRPC कोड में है, पर इस वर्शन में छिपा हुआ है: उसके panel को पूरी
protobuf-javalibrary चाहिए, जिसे ऐप बाहर रखता है, इसलिए वह अभी Android पर काम नहीं कर सकता।अभी नहीं - सादा HTTP और
ws://सिर्फ़ localhost, 127.0.0.1 और 10.0.2.2 तक पहुँचते हैं; LAN address के लिए HTTPS चाहिए।नेटवर्क ज़रूरी - सिर्फ़ सिस्टम की certificate authorities पर भरोसा किया जाता है, इसलिए आपके खुद install किए certificate वाला proxy काम नहीं करेगा।नेटवर्क ज़रूरी
- proxy और client certificate की कोई setting नहीं है।अभी नहीं
- OAuth 2.0 redirects पकड़े नहीं जा सकते; आप
codeखुद paste करते हैं। PKCE नहीं और refresh token नहीं।जानबूझकर - Hawk और NTLM पर Soon लिखा है और वे कुछ नहीं करते।अभी नहीं
- WebSocket और SSE headers नहीं भेज सकते और अपने-आप reconnect नहीं कर सकते; SSE
retry:को अनदेखा करता है।अभी नहीं - GraphQL panel में subscriptions, operation name, headers या auth नहीं हैं।अभी नहीं
- MQTT सिर्फ़ version 5 बोलता है और retain के साथ publish नहीं कर सकता।अभी नहीं
- Scripts को
pmका छोटा subset मिलता है और उन्हें आधुनिक WebView चाहिए।जानबूझकर - Mock routes और उनका log सिर्फ़ memory में रहते हैं और उनके लिए edit dialog नहीं है।अभी नहीं
- Collections का नाम नहीं बदला या उन्हें दोबारा व्यवस्थित नहीं किया जा सकता, folders बनाए या खोले नहीं जा सकते, और सेव की गई सारी requests का नाम New Request होता है।अभी नहीं
- sheet से हटाई गई cookies सेव की गई copy से मिटती नहीं।अभी नहीं
- image preview नहीं, response को share या सेव करना नहीं, और network error का कारण नहीं दिखता।अभी नहीं
- code generator के सिर्फ़ cURL output में auth शामिल होता है।अभी नहीं
- History में ज़्यादा से ज़्यादा 200 entries रहती हैं।जानबूझकर
- MQTT और Socket.IO clients की लिखी errors ऐप की भाषा कोई भी हो, स्पैनिश में होती हैं।अभी नहीं
- Raw request bodies और scripts project files (Save to project) में वैसे ही लिखे जाते हैं जैसे टाइप किए गए: ऐप free text के अंदर secret को पहचान नहीं सकता।जानबूझकर
आम समस्याएँ
0 Error और खाली body
request को कोई जवाब नहीं मिला: network, TLS या timeout की विफलता। panel कारण नहीं दिखाता, पर ऐप उसे Console log में ✗ Request failed: से शुरू होने वाली एक line के रूप में लिखता है; error स्क्रीन में tabs नहीं होते, इसलिए अगली response के Console tab में उसे पढ़ें जो वाकई आए (log पूरे session को कवर करता है)। address, अपना connection और Timeout (ms) जाँचें। localhost, 127.0.0.1 और 10.0.2.2 के बाहर का सादा http:// address blocked है: HTTPS इस्तेमाल करें।
Request cancelled
जवाब आने से पहले आपने Cancel request पर टैप किया (या request cancel हो गई)। कुछ भी गलत नहीं है।
Run collection, Start या Mock Server switch पर टैप करने पर API Tester Pro window खुलती है
Free पर ये तीनों Pro features हैं, और window बताती है कि आपने कौन सा आज़माया। दूसरा collection या environment बनाना (Save to collection में नया नाम लिखना भी), या पहले से एक collection होने पर collection import करना वही window खोलता है। Not now उसे बंद करता है; Unlock API Tester Pro Pro स्क्रीन खोलता है।
The free plan keeps only the last 10 history entries. This request was not saved.
Free की history 10 entries पर रुक जाती है। जगह बनाने के लिए Clear all history पर टैप करें (एक अकेली entry delete करने का तरीका नहीं है), या Pro पर जाएँ।
Invalid JSON: …
JSON body parse नहीं होती; colon के बाद का text बताता है कि कहाँ। भेजने से पहले उसे ठीक करें, या सही होने के बाद Beautify इस्तेमाल करें।
Import failed: …
paste किया text आपके चुने Format से मेल नहीं खाता, या document ख़राब बना है। सही format चुनें। cURL के लिए कोई संदेश नहीं है: error Console log में है।
Could not save to project: …
ऐप खुले project में .pocketcode/api/ नहीं लिख सका; colon के बाद का text कारण बताता है।
Open a project to save collections as files
Save to project और Import from project खुले project पर काम करते हैं। पहले कोई project खोलें।
No collections found under .pocketcode/api/ in this project
खुले project में _collection.json वाला .pocketcode/api/ folder नहीं है। पहले किसी collection को project में सेव करें, या सही project खोलें।
Couldn't read that file as CSV or JSON data rows
runner की data file CSV हो तो उसमें header line चाहिए (commas और double quotes, multiline fields नहीं), या वह flat objects का JSON array होनी चाहिए।
Could not get the token: …
OAuth 2.0 token request fail हुई; text कारण बताता है। Token URL, Client ID और Client Secret जाँचें। Authorization Code के साथ सिर्फ़ code की value paste करें।
Response did not contain a parseable schema
GraphQL endpoint ने introspection query का जवाब schema से नहीं दिया। URL जाँचें; कुछ servers introspection बंद रखते हैं।
MQTT या Socket.IO panel में Error: …
connection fail हुआ; text कारण बताता है। host, port और Use TLS जाँचें। MQTT के लिए पक्का करें कि broker MQTT 5 बोलता है। कुछ संदेश स्पैनिश में हैं, जैसे El host no puede estar vacío।
No preview available for this content type
Preview सिर्फ़ text/html render करता है। बाकी सबके लिए Pretty या Raw इस्तेमाल करें; images का preview नहीं हो सकता।
No match for that path
JSONPath filter एक सटीक path देखता है, जैसे $.a.b[0].c, search नहीं करता। $ से शुरू करें।
No tests ran for this response
request में कोई assertion नहीं है, और उसकी test script (अगर है) ने कभी pm.test नहीं बुलाया या चल नहीं पाई। Scripts में एक assertion जोड़ें।
JavaScript engine unavailable on this device
console की चेतावनी: इस डिवाइस में script engine के लिए आधुनिक WebView नहीं है, इसलिए pre-request या test script नहीं चली। Assertions फिर भी चले।
Script error: …
आपकी script ने error फेंकी, अक्सर इसलिए कि वह Postman API के ऐसे हिस्से का इस्तेमाल करती है जो है ही नहीं (pm.sendRequest, pm.variables, require…)। सिर्फ़ बताया गया pm subset मौजूद है।
No enabled routes: every request will get 404 until you add one
console की चेतावनी जब आप बिना किसी चालू route के mock server चालू करते हैं। जिस 404 की body में No mock route matched लिखा हो, उसका मतलब है कि method या path किसी route से मेल नहीं खाता। अगर console Mock server could not start: … कहे, तो port शायद पहले से इस्तेमाल में है: कोई दूसरा चुनें, या 0।