
HTTP, GraphQL और gRPC के लिए टर्मिनल API क्लाइंट। सरल .http फ़ाइलें जिन्हें आप diff और version कर सकते हैं, साथ ही वर्कफ़्लो, मॉक, प्रोफाइलिंग, ट्रेसिंग, OpenAPI इम्पोर्ट, SSH टनल, Kubernetes पोर्ट-फ़ॉरवर्ड, WebSocket, SSE और CLI रनर की सुविधाएँ।
REST, GraphQL, gRPC, WebSocket और SSE के लिए एक टर्मिनल-आधारित API क्लाइंट और वर्कबेंच।
Resterm एक API-as-code वर्कबेंच है - या अधिक परिचित शब्दों में, एक API क्लाइंट - जो सादे .http और .rest फ़ाइलों के इर्द-गिर्द बना है, जिन्हें आप diff, समीक्षा और वर्शन कर सकते हैं। यह इंटरैक्टिव रिक्वेस्ट संपादन को घोषणात्मक वर्कफ़्लो, एसर्शन, मॉक सर्वर, ट्रेसिंग, प्रोफाइलिंग और हेडलेस ऑटोमेशन के साथ जोड़ता है। सब कुछ आपकी मशीन पर ही रहता है। कोई खाता नहीं, कोई क्लाउड सिंक नहीं, कोई टेलीमेट्री नहीं।
अगर आप GUI कलेक्शन पर केंद्रित Postman-शैली का क्लाइंट ढूंढ रहे हैं, तो Resterm संभवतः आपके लिए नहीं है, लेकिन इसे एक बार आज़माइए!
[!NOTE] Resterm अब v1 है! नई सुविधाओं और ब्रेकिंग बदलावों के लिए v1.0.0 रिलीज़ नोट्स देखें।
त्वरित लिंक: स्क्रीनशॉट, इंस्टॉलेशन, त्वरित प्रारंभ, दस्तावेज़ीकरण।
वर्कफ़्लो
ट्रेस और टाइमलाइन
प्रोफाइलर
Explain
RestermScript
लाइट थीम
OAuth ब्राउज़र डेमो (पुराना UI डिज़ाइन)
@when, @if/@elif/@else, @for-each), बहु-चरणीय वर्कफ़्लो (@workflow / @step), कैप्चर, वेरिएबल और एसर्शन (@capture, @var, @assert)।K सहायता, / खोज और :w, :q, तथा जैसे कमांड के साथ।Resterm इंस्टॉल करें (स्क्रिप्ट, Windows और मैनुअल इंस्टॉल के लिए इंस्टॉलेशन देखें)।
brew install resterm
एक वर्कस्पेस बूटस्ट्रैप करें।
mkdir my-api && cd my-api
resterm init
resterm init आपको एक छोटा प्रोजेक्ट देता है जो इंटरनेट कनेक्शन के बिना काम करता है। जनरेट की गई requests.http में स्थानीय मॉक परिदृश्य और कुछ रिक्वेस्ट शामिल हैं जो एक-दूसरे पर आधारित होती हैं। वे एसर्शन, बियरर प्रमाणीकरण, JSON मैचिंग, json-rules और @for-each को कवर करते हैं।
इसे शुरू करें और अपनी पहली रिक्वेस्ट भेजें।
resterm
हाइलाइट की गई रिक्वेस्ट भेजने के लिए एडिटर में Ctrl+Enter दबाएँ।
अभी तक कोई फ़ाइल नहीं है? बस resterm चलाएँ, एक URL टाइप करें और Ctrl+Enter दबाएँ। पेस्ट किया गया curl कमांड भी काम करता है।
resterm run TUI खोले बिना .http / .rest फ़ाइलों को निष्पादित करता है, जो CI चलाता है।
resterm run --request CreateUser requests.http
जनरेट किया गया प्रोजेक्ट एक स्थानीय मॉक सर्वर से बात करता है। इसे पहले दूसरे टर्मिनल में शुरू करें:
resterm mock requests.http
TUI में, वर्कस्पेस से वही मॉक सर्वर शुरू करने के लिए g Shift+M दबाएँ।
CLI दस्तावेज़ीकरण सेलेक्टर, आउटपुट प्रारूप और अधिक उदाहरणों को कवर करता है।
वही फ़ाइलें जिनमें आपकी रिक्वेस्ट होती हैं, HTTP मॉक्स परोस सकती हैं।
random, normal या jitter के साथ हर रिक्वेस्ट को अलग विलंब दें।@expect के साथ कॉल संख्या सत्यापित करें या RestermScript से प्राप्त ट्रैफ़िक का निरीक्षण करें।एक ही रूट पर दो परिदृश्य:
### Payment accepted
# @mock method=POST path=/payments name=accepted default=true latency=150ms
HTTP/1.1 202 Accepted
Content-Type: application/json
{"id":"pay_123","status":"pending"}
### Payment declined
# @mock method=POST path=/payments name=declined
# @match query={"mode":"decline"} headers={"X-Tenant":"demo"} json={"amount":0}
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json
{"error":"amount must be positive"}
एक फ़ाइल या पूरी निर्देशिका परोसें:
resterm mock ./requests.http
resterm mock --recursive --addr 127.0.0.1:9090 ./requests
अधिक जानकारी मॉक सर्वर संदर्भ, resterm mock CLI गाइड और काम करने वाले उदाहरण में।
headless पैकेज उसी इंजन के लिए सार्वजनिक Go API है जो TUI और CLI को शक्ति देता है। इसका उपयोग अपने Go कोड या CI से रिक्वेस्ट, वर्कफ़्लो, एसर्शन, तुलना रन और प्रोफाइल चलाने के लिए करें।
अगर आप खुद रनर नहीं बनाना चाहते, तो resterm-runner उपलब्ध है।
Tab / Shift+Tab: साइडबार, एडिटर और प्रतिक्रिया के बीच जाएँ।g+r, g+i, g+p: रिक्वेस्ट, एडिटर या प्रतिक्रिया पर जाएँ।g+h / g+l: क्षैतिज रूप से आकार बदलें। साइडबार फ़ोकस होने पर साइडबार की चौड़ाई बदलती है, अन्यथा एडिटर/प्रतिक्रिया विभाजन।g+j / g+k: स्टैक्ड होने पर एडिटर/प्रतिक्रिया की ऊँचाई बदलें, नेविगेटर में शाखाओं को संक्षिप्त या विस्तृत करें।g+v / g+s: प्रतिक्रिया पेन को इनलाइन और स्टैक्ड लेआउट के बीच टॉगल करें।g+1, g+2, g+3: साइडबार, एडिटर, प्रतिक्रिया को छोटा करें या पुनर्स्थापित करें।[!TIP] अगर आपको केवल तीन शॉर्टकट याद रखने हैं:
Ctrl+Enterरिक्वेस्ट भेजता हैTab/Shift+Tabपेन स्विच करता हैg+pप्रतिक्रिया पर जाता है
Linux / macOS (Homebrew)
brew install resterm
[!NOTE] Homebrew इंस्टॉल को Homebrew से अपडेट किया जाना चाहिए (
brew upgrade resterm)। अंतर्निहितresterm --updateकमांड GitHub रिलीज़ या इंस्टॉल स्क्रिप्ट से इंस्टॉल किए गए बाइनरी के लिए है।
Linux / macOS (Shell script)
[!IMPORTANT] प्री-बिल्ट Linux बाइनरी glibc 2.32 या नए पर निर्भर करती हैं। पुराने डिस्ट्रो पर, नए glibc टूलचेन के साथ स्रोत से निर्माण करें या रिलीज़ आर्काइव का उपयोग करने से पहले glibc अपग्रेड करें।
curl -fsSL https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.sh | bash
या wget के साथ:
wget -qO- https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.sh | bash
Windows (PowerShell)
iwr -useb https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.ps1 | iex
स्क्रिप्ट आपकी आर्किटेक्चर का पता लगाती हैं, नवीनतम रिलीज़ डाउनलोड करती हैं और बाइनरी इंस्टॉल करती हैं।
[!NOTE] मैनुअल इंस्टॉल सहायक
curlऔरjqका उपयोग करता है। अपने पैकेज मैनेजर सेjqइंस्टॉल करें (brew install jq,sudo apt install jq, आदि)।
Linux / macOS
# Detect latest tag
LATEST_TAG=$(curl -fsSL https://api.github.com/repos/unkn0wn-root/resterm/releases/latest | jq -r .tag_name)
# Download the matching binary (Darwin/Linux + amd64/arm64)
curl -fL -o resterm "https://github.com/unkn0wn-root/resterm/releases/download/${LATEST_TAG}/resterm_$(uname -s)_$(uname -m)"
# Make it executable and move it onto your PATH
chmod +x resterm
sudo install -m 0755 resterm /usr/local/bin/resterm
Windows (PowerShell)
$latest = Invoke-RestMethod https://api.github.com/repos/unkn0wn-root/resterm/releases/latest
$asset = $latest.assets | Where-Object { $_.name -like 'resterm_Windows_*' } | Select-Object -First 1
Invoke-WebRequest -Uri $asset.browser_download_url -OutFile resterm.exe
# Optionally relocate to a directory on PATH, e.g.:
Move-Item resterm.exe "$env:USERPROFILE\bin\resterm.exe"
go install github.com/unkn0wn-root/resterm/cmd/resterm@latest
resterm --check-update
resterm --update
पहला कमांड बताता है कि कोई नया रिलीज़ उपलब्ध है या नहीं। दूसरा उसे डाउनलोड करता है, सत्यापित करता है और वहीं इंस्टॉल कर देता है। Windows पर पुराना बाइनरी नए के बगल में resterm.exe.old के रूप में रहता है और अगले अपडेट पर साफ़ कर दिया जाता है।
resterm.env.json) हैं जो रिक्वेस्ट निर्देशिका, वर्कस्पेस रूट या CWD में पाई जाती हैं। एक फ़ाइल नामित वातावरण या स्वतंत्र समूहों को परिभाषित कर सकती है, उदाहरण के लिए api, app और credentials, जो एक वातावरण में संयोजित होते हैं। Dotenv फ़ाइलें (.env, .env.*) --env-file के माध्यम से वैकल्पिक हैं और एकल-वर्कस्पेस हैं। समूहीकृत वातावरण और _examples/grouped/ में चलाने योग्य नमूना देखें।RESTERM_CONFIG_DIR के साथ ओवरराइड किया जा सकता है:
~/Library/Application Support/resterm%APPDATA%\resterm~/.config/restermकिसी वर्कस्पेस को Git-अनुकूल बंडल के रूप में निर्यात करें और उसे किसी अन्य वर्कस्पेस में आयात करें। बंडल चेकसम के साथ manifest.json रखते हैं, इसलिए आयात पहले फ़ाइल अखंडता सत्यापित करते हैं। वातावरण मान REPLACE_ME प्लेसहोल्डर के रूप में निर्यात किए जाते हैं, इसलिए रहस्य कभी भी आपकी मशीन से बाहर नहीं जाते।
resterm collection export --workspace ./my-api --out ./shared/my-api-bundle
resterm collection import --in ./shared/my-api-bundle --workspace ./my-local-api
आयात का पूर्वावलोकन करने के लिए --dry-run और मौजूदा फ़ाइलों को अधिलेखित करने के लिए --force जोड़ें। दस्तावेज़: कलेक्शन साझाकरण।
एडिटर में curl कमांड पेस्ट करें और इसे संरचित रिक्वेस्ट में बदलने के लिए Ctrl+Enter दबाएँ। Resterm सामान्य फ़्लैग समझता है, दोहराए गए डेटा खंडों को मर्ज करता है और मल्टीपार्ट अपलोड को बरकरार रखता है। sudo या $ जैसे शेल उपसर्ग अनदेखा किए जाते हैं। CLI --from-curl के साथ वही रूपांतरण करता है।
यह:
curl -X POST https://api.example.com/login \
-H "Content-Type: application/json" \
--user demo:secret \
-d '{"user":"demo"}'
इसमें बदल जाता है:
### POST https://api.example.com/login
# @auth basic demo secret
POST https://api.example.com/login
Content-Type: application/json
{"user":"demo"}
दस्तावेज़: इनलाइन रिक्वेस्ट और आयात उदाहरण।
RestermScript (RTS) Resterm के लिए बनाई गई एक छोटी एक्सप्रेशन भाषा है। यह सीधे रिक्वेस्ट प्रारूप, वर्कफ़्लो और निर्देशों को लक्षित करती है, जिससे स्क्रिप्ट छोटी और अनुमानित रहती हैं। जब आपको और अधिक की आवश्यकता हो, तब JavaScript हुक उपलब्ध रहते हैं।
त्वरित उदाहरण (RTS मॉड्यूल + रिक्वेस्ट):
// rts/helpers.rts
module helpers
export fn authHeader(token) {
return token ? "Bearer " + token : ""
}
# @use ./rts/helpers.rts
# @when env.has("feature")
# @assert response.statusCode == 200
GET https://api.example.com/users/{{= vars.get("user") }}
Authorization: {{= helpers.authHeader(vars.get("auth.token")) }}
पूर्ण संदर्भ: docs/restermscript.md।
क्लाइंट क्रेडेंशियल, पासवर्ड ग्रांट और PKCE के साथ ऑथराइज़ेशन कोड। ऑथ कोड फ़्लो के लिए Resterm आपका ब्राउज़र खोलता है, 127.0.0.1 पर एक स्थानीय कॉलबैक सर्वर चलाता है, रीडायरेक्ट कैप्चर करता है और कोड का आदान-प्रदान करता है। टोकन प्रति वातावरण कैश किए जाते हैं और समाप्त होने पर रीफ़्रेश होते हैं। दस्तावेज़: docs/resterm.md#oauth-20-directive और _examples/oauth2.http।
@workflow और @step के साथ रिक्वेस्ट को श्रृंखलाबद्ध करें, चरणों के बीच डेटा पास करें और जहाँ आवश्यक हो JS हुक जोड़ें। दस्तावेज़ और नमूना: docs/resterm.md#workflows और _examples/workflows.http।
@compare या --compare के साथ विभिन्न वातावरणों में एक ही रिक्वेस्ट चलाएँ, फिर g+c के साथ प्रतिक्रियाओं की साथ-साथ तुलना करें। दस्तावेज़: docs/resterm.md#compare-runs।
DNS, कनेक्ट, TLS, TTFB और ट्रांसफ़र समय कैप्चर करने के लिए बजट के साथ @trace जोड़ें। Resterm ओवररन को हाइलाइट करता है और स्पैन को OpenTelemetry में निर्यात कर सकता है। दस्तावेज़: docs/resterm.md#timeline--tracing।
स्ट्रीम स्क्रिप्ट और रिकॉर्ड करने के लिए @ws चरणों के साथ @websocket या @sse का उपयोग करें। Stream टैब ट्रांसक्रिप्ट रखता है और एक इंटरैक्टिव कंसोल शामिल करता है। दस्तावेज़: docs/resterm.md#streaming-sse--websocket।
ट्रांसक्रिप्ट, मेटाडेटा और बॉडी विस्तार के साथ यूनरी और स्ट्रीमिंग कॉल। दस्तावेज़: docs/resterm.md#grpc।
--from-openapi के साथ OpenAPI 3 स्पेक्स को .http कलेक्शन में बदलें, किसी स्थानीय फ़ाइल या http(s) URL से। --openapi-mode requests, mocks या both के साथ जनरेट किए गए ब्लॉक चुनें। रिमोट फ़ेच वैश्विक --insecure और --proxy फ़्लैग का सम्मान करते हैं। दस्तावेज़: docs/cli.md#import-examples।
@ssh प्रोफाइल के साथ HTTP, gRPC, WebSocket और SSE ट्रैफ़िक को बास्टियन के माध्यम से रूट करें। दस्तावेज़: docs/resterm.md#ssh-tunnels और _examples/ssh.http।
@k8s प्रोफाइल के साथ वही विचार, जो pods, services, deployments या statefulsets को लक्षित करते हैं। दस्तावेज़: docs/resterm.md#kubernetes-port-forwards और _examples/k8s.http।
कॉन्फ़िग निर्देशिका में themes/*.toml और bindings.toml या bindings.json के साथ रंग और कीबाइंडिंग अनुकूलित करें। दस्तावेज़: docs/resterm.md#theming और docs/resterm.md#custom-bindings।
docs/resterm.md रिक्वेस्ट सिंटैक्स, निर्देश, स्क्रिप्टिंग और ट्रांसपोर्ट को कवर करता है।docs/cli.md resterm run, इम्पोर्टर, कलेक्शन और इतिहास को कवर करता है।TUI के अंदर, ? दबाएँ या :help चलाएँ। इंस्टॉल किए गए रिलीज़ के लिए पूर्ण वेब मैनुअल चाहिए तो :docs का उपयोग करें।
:help:docsresterm run, JSON और JUnit आउटपुट के साथ।g+z / g+Z: फ़ोकस्ड पेन को ज़ूम करें, ज़ूम साफ़ करें।Ctrl+E: वातावरण स्विच करें।Ctrl+G: कैप्चर किए गए ग्लोबल्स का निरीक्षण करें।?: खोजने योग्य ऑफ़लाइन सहायता सूचकांक खोलें।K (एडिटर सामान्य मोड): कर्सर के नीचे निर्देश, टेम्पलेट या कीवर्ड के लिए सहायता खोलें।:help <topic> / :man <topic>: एक एम्बेडेड विषय खोलें; :docs <topic> संस्करण-मिलान वाला पूर्ण मैनुअल खोलता है।Ctrl+O: फ़ाइल/वर्कस्पेस पॉपअप खोलें। फ़िल्टर करने के लिए टाइप करें, Up / Down से स्क्रॉल करें, और निर्देशिकाओं में जाने के लिए Tab का उपयोग करें।:: कमांड लाइन खोलें। सुझाव चुनने के लिए Up / Down, पूरा करने के लिए Tab, या चयन स्वीकार करने और चलाने के लिए Enter का उपयोग करें। :mock start --source और :edit जैसे पाथ तर्क उसी पॉपअप में फ़ाइलसिस्टम ब्राउज़ करते हैं।Ctrl+V / Ctrl+U: साथ-साथ तुलना के लिए प्रतिक्रिया पेन को विभाजित करें।Ctrl+Shift+C या g y (प्रतिक्रिया फ़ोकस्ड): पूरा Pretty, Raw या Headers टैब कॉपी करें।g x: सक्रिय रिक्वेस्ट को भेजे बिना उसका Explain पूर्वावलोकन दिखाएँ।g e: वर्तमान फ़ाइल को अपने बाहरी एडिटर में खोलें।