
resterm v0.51.3
HTTP/GraphQL/gRPC के लिए टर्मिनल API क्लाइंट, जिसमें SSH टनल, WebSockets, SSE, Workflows, Profiling, OpenAPI, Kubernetes port-forwarding, CLI और mocks के लिए समर्थन है।
Resterm
REST, GraphQL, gRPC, WebSocket और SSE के लिए एक टर्मिनल-आधारित API क्लाइंट और वर्कबेंच।
Resterm एक API-as-code वर्कबेंच है - या अधिक परिचित शब्दों में, एक API क्लाइंट - जो सादे .http और .rest फ़ाइलों के इर्द-गिर्द बना है, जिन्हें आप diff, समीक्षा और वर्शन कर सकते हैं। यह इंटरैक्टिव रिक्वेस्ट संपादन को घोषणात्मक वर्कफ़्लो, एसर्शन, मॉक सर्वर, ट्रेसिंग, प्रोफाइलिंग और हेडलेस ऑटोमेशन के साथ जोड़ता है। सब कुछ आपकी मशीन पर ही रहता है। कोई खाता नहीं, कोई क्लाउड सिंक नहीं, कोई टेलीमेट्री नहीं।
अगर आप GUI कलेक्शन पर केंद्रित Postman-शैली का क्लाइंट ढूंढ रहे हैं, तो Resterm संभवतः आपके लिए नहीं है, लेकिन इसे एक बार आज़माइए!
[!NOTE] Resterm अब v1 है! नई सुविधाओं और ब्रेकिंग बदलावों के लिए v1.0.0 रिलीज़ नोट्स देखें।
त्वरित लिंक: स्क्रीनशॉट, इंस्टॉलेशन, त्वरित प्रारंभ, दस्तावेज़ीकरण।
स्क्रीनशॉट टूर
UI को क्रिया में देखें (विस्तार के लिए क्लिक करें)
वर्कफ़्लो
ट्रेस और टाइमलाइन
प्रोफाइलर
Explain
RestermScript
लाइट थीम
OAuth ब्राउज़र डेमो (पुराना UI डिज़ाइन)
Resterm क्यों
- HTTP, GraphQL, gRPC, WebSocket और SSE तुरंत उपयोग के लिए तैयार।
- ऑटोमेशन रिक्वेस्ट फ़ाइलों में रहता है: शर्तें (
@when,@if/@elif/@else,@for-each), बहु-चरणीय वर्कफ़्लो (@workflow/@step), कैप्चर, वेरिएबल और एसर्शन (@capture,@var,@assert)। - RestermScript, Resterm के लिए बनाई गई एक छोटी एक्सप्रेशन भाषा, जब चाहें तब JavaScript हुक के साथ।
- Vim-शैली नियंत्रण प्रासंगिक बॉटम बार संकेतों, खोजने योग्य ऑफ़लाइन सहायता, कर्सर के नीचे
Kसहायता,/खोज और:w,:q,:helpतथा:docsजैसे कमांड के साथ। - अंतर्निहित प्रमाणीकरण और टनलिंग: OAuth 2.0 (क्लाइंट क्रेडेंशियल, पासवर्ड, PKCE के साथ ऑथ कोड), आपके मौजूदा CLI द्वारा समर्थित प्रमाणीकरण, SSH टनल और Kubernetes पोर्ट-फ़ॉरवर्ड। कोई अतिरिक्त टूल आवश्यक नहीं।
- CLI रनर: स्क्रिप्टेड रन और CI के लिए
resterm run, JSON और JUnit आउटपुट के साथ। - मॉक सर्वर उन रिक्वेस्ट के बगल में घोषित किए जाते हैं जिनकी वे नकल करते हैं, मैचिंग नियमों, अनुक्रमों, कॉल सत्यापन और हॉट रीलोड के साथ।
- टाइमलाइन ट्रेसिंग, प्रोफाइलिंग और तुलना रन विभिन्न वातावरणों में।
- स्ट्रीमिंग ट्रांसक्रिप्ट और WebSocket तथा SSE के लिए एक इंटरैक्टिव कंसोल।
- कोई AI एकीकरण नहीं, कभी नहीं।
त्वरित प्रारंभ
-
Resterm इंस्टॉल करें (स्क्रिप्ट, Windows और मैनुअल इंस्टॉल के लिए इंस्टॉलेशन देखें)।
brew install resterm -
एक वर्कस्पेस बूटस्ट्रैप करें।
mkdir my-api && cd my-api resterm initresterm initआपको एक छोटा प्रोजेक्ट देता है जो इंटरनेट कनेक्शन के बिना काम करता है। जनरेट की गईrequests.httpमें स्थानीय मॉक परिदृश्य और कुछ रिक्वेस्ट शामिल हैं जो एक-दूसरे पर आधारित होती हैं। वे एसर्शन, बियरर प्रमाणीकरण, JSON मैचिंग,json-rulesऔर@for-eachको कवर करते हैं। -
इसे शुरू करें और अपनी पहली रिक्वेस्ट भेजें।
restermहाइलाइट की गई रिक्वेस्ट भेजने के लिए एडिटर में
Ctrl+Enterदबाएँ।
अभी तक कोई फ़ाइल नहीं है? बस resterm चलाएँ, एक URL टाइप करें और Ctrl+Enter दबाएँ। पेस्ट किया गया curl कमांड भी काम करता है।
CLI
resterm run TUI खोले बिना .http / .rest फ़ाइलों को निष्पादित करता है, जो CI चलाता है।
resterm run --request CreateUser requests.http
जनरेट किया गया प्रोजेक्ट एक स्थानीय मॉक सर्वर से बात करता है। इसे पहले दूसरे टर्मिनल में शुरू करें:
resterm mock requests.http
TUI में, वर्कस्पेस से वही मॉक सर्वर शुरू करने के लिए g Shift+M दबाएँ।
CLI दस्तावेज़ीकरण सेलेक्टर, आउटपुट प्रारूप और अधिक उदाहरणों को कवर करता है।
मॉक सर्वर
वही फ़ाइलें जिनमें आपकी रिक्वेस्ट होती हैं, HTTP मॉक्स परोस सकती हैं।
- आने वाली रिक्वेस्ट को क्वेरी, हेडर या JSON बॉडी द्वारा मैच करें, फिर कोई नामित या डिफ़ॉल्ट प्रतिक्रिया चुनें।
- प्रतिक्रिया अनुक्रमों के साथ पोलिंग और रिट्राई फ़्लो मॉडल करें, जिसमें प्रति संसाधन या कॉलर स्वतंत्र कर्सर शामिल हैं।
- प्रतिक्रियाओं को एक निश्चित अवधि के लिए विलंबित करें, या
random,normalयाjitterके साथ हर रिक्वेस्ट को अलग विलंब दें। - डायनेमिक डेटा के लिए जनरेटर के साथ पाथ, क्वेरी, हेडर और बॉडी मानों से प्रतिक्रियाएँ बनाएँ।
@expectके साथ कॉल संख्या सत्यापित करें या RestermScript से प्राप्त ट्रैफ़िक का निरीक्षण करें।- वैकल्पिक TLS के साथ स्रोत फ़ाइलों और फिक्स्चर को हॉट रीलोड करें।
एक ही रूट पर दो परिदृश्य:
### 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: साइडबार, एडिटर, प्रतिक्रिया को छोटा करें या पुनर्स्थापित करें।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: वर्तमान फ़ाइल को अपने बाहरी एडिटर में खोलें।
[!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 के रूप में रहता है और अगले अपडेट पर साफ़ कर दिया जाता है।
कॉन्फ़िगरेशन
- वातावरण JSON फ़ाइलें (
resterm.env.json) हैं जो रिक्वेस्ट निर्देशिका, वर्कस्पेस रूट या CWD में पाई जाती हैं। एक फ़ाइल नामित वातावरण या स्वतंत्र समूहों को परिभाषित कर सकती है, उदाहरण के लिए api, app और credentials, जो एक वातावरण में संयोजित होते हैं। Dotenv फ़ाइलें (.env,.env.*)--env-fileके माध्यम से वैकल्पिक हैं और एकल-वर्कस्पेस हैं। समूहीकृत वातावरण और_examples/grouped/में चलाने योग्य नमूना देखें। - कॉन्फ़िग OS के अनुसार संग्रहीत होता है और
RESTERM_CONFIG_DIRके साथ ओवरराइड किया जा सकता है:- macOS:
~/Library/Application Support/resterm - Windows:
%APPDATA%\resterm - Linux/Unix:
~/.config/resterm
- macOS:
कलेक्शन
किसी वर्कस्पेस को 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 आयात
एडिटर में 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
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।
गहन अध्ययन
OAuth 2.0
क्लाइंट क्रेडेंशियल, पासवर्ड ग्रांट और 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।
स्ट्रीमिंग (WebSocket और SSE)
स्ट्रीम स्क्रिप्ट और रिकॉर्ड करने के लिए @ws चरणों के साथ @websocket या @sse का उपयोग करें। Stream टैब ट्रांसक्रिप्ट रखता है और एक इंटरैक्टिव कंसोल शामिल करता है। दस्तावेज़: docs/resterm.md#streaming-sse--websocket।
gRPC
ट्रांसक्रिप्ट, मेटाडेटा और बॉडी विस्तार के साथ यूनरी और स्ट्रीमिंग कॉल। दस्तावेज़: docs/resterm.md#grpc।
OpenAPI आयात
--from-openapi के साथ OpenAPI 3 स्पेक्स को .http कलेक्शन में बदलें, किसी स्थानीय फ़ाइल या http(s) URL से। --openapi-mode requests, mocks या both के साथ जनरेट किए गए ब्लॉक चुनें। रिमोट फ़ेच वैश्विक --insecure और --proxy फ़्लैग का सम्मान करते हैं। दस्तावेज़: docs/cli.md#import-examples।
SSH टनल
@ssh प्रोफाइल के साथ HTTP, gRPC, WebSocket और SSE ट्रैफ़िक को बास्टियन के माध्यम से रूट करें। दस्तावेज़: docs/resterm.md#ssh-tunnels और _examples/ssh.http।
Kubernetes पोर्ट-फ़ॉरवर्ड
@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.mdresterm run, इम्पोर्टर, कलेक्शन और इतिहास को कवर करता है।- संगतता v1 के लिए Resterm की संगतता गारंटियों की व्याख्या करता है।
TUI के अंदर, ? दबाएँ या :help चलाएँ। इंस्टॉल किए गए रिलीज़ के लिए पूर्ण वेब मैनुअल चाहिए तो :docs का उपयोग करें।