العودة إلى التحديثات
New releaseSep 5, 2026

resterm v1.5.6

عميل API للطرفية (Terminal) يدعم HTTP وGraphQL وgRPC. ملفات .http بسيطة يمكنك مقارنتها والتحكم بإصداراتها، مع سير عمل، نماذج محاكاة، تنميط، تتبّع، استيراد OpenAPI، أنفاق SSH، إعادة توجيه منافذ Kubernetes، WebSocket وSSE ومشغّل CLI.

مشاركة

Resterm
Resterm

منصة عمل API-as-code للطرفية.

لقطة شاشة لواجهة Resterm TUI الأساسية

لقطة شاشة لـ Resterm مع الجدول الزمني
عرض التتبع والجدول الزمني

Resterm هو عميل API يخزّن الطلبات في ملفات .http و .rest نصية يمكن أن تتواجد جنبًا إلى جنب في مستودعك مثل بقية الكود الخاص بك. يمكنك استخدام واجهة الطرفية، أو تشغيل نفس الملفات في CI باستخدام resterm run.

روابط سريعة: لقطات الشاشة، التثبيت، البدء السريع، ملفات الطلبات، التوثيق.

لقطات الشاشة

شاهد الواجهة أثناء العمل (انقر للتوسيع)

سير العمل

لقطة شاشة لـ Resterm مع سير العمل

المُحلّل

لقطة شاشة لمُحلّل Resterm

الشرح

لقطة شاشة لتبويب الشرح في Resterm

RestermScript

لقطة شاشة لـ Resterm مع RestermScript

لماذا Resterm

  • دعم HTTP و GraphQL و gRPC و WebSocket و SSE.
  • الأتمتة في ملفات الطلبات: الشروط (@when، @if/@elif/@else، @for-each)، سير العمل متعدد الخطوات (@workflow / @step)، الالتقاطات، المتغيرات والتأكيدات (@capture، @var، @assert).
  • الأنفاق في ملف الطلب: يقوم @ssh و @k8s بتوجيه الطلب عبر SSH bastion أو Kubernetes port-forward يفتحه ويغلقه Resterm نيابة عنك، مع ملفات تعريف لكل ملف أو مساحة عمل.
  • تسجيل حركة HTTP وتصديرها إلى ملفات Resterm .http كطلبات أو استجابات وهمية.
  • RestermScript، لغة تعبيرات صغيرة مبنية لـ Resterm، مع خطافات JavaScript عندما تريدها.
  • تحكم شبيه بـ Vim مع تلميحات الاختصارات، مساعدة غير متصلة قابلة للبحث، Shift+k للمساعدة تحت المؤشر، / للبحث وأوامر مثل :w و :q و :help و :docs.
  • المصادقة: OAuth 2.0 (بيانات اعتماد العميل، كلمة المرور، رمز التفويض مع PKCE) و @auth command لإعادة استخدام الرموز من أدوات CLI المثبتة لديك بالفعل، مثل gh auth token.
  • مشغّل CLI: resterm run للتشغيل النصي و CI، مع إخراج JSON و JUnit.
  • خوادم وهمية معلنة بجانب الطلبات التي تحاكيها، مع قواعد المطابقة، التسلسلات، التحقق من الاستدعاء وإعادة التحميل الفوري.
  • تتبع الجدول الزمني، التحليل ومقارنة التشغيلات عبر البيئات.
  • نصوص البث المباشر ووحدة تحكم تفاعلية لـ WebSocket و SSE.
  • بدون تكامل ذكاء اصطناعي

التثبيت

macOS و Linux:

brew install resterm
# or
curl -fsSL https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.sh | bash

Windows:

iwr -useb https://raw.githubusercontent.com/unkn0wn-root/resterm/main/install.ps1 | iex

من المصدر، باستخدام Go 1.25 أو أحدث:

go install github.com/unkn0wn-root/resterm/cmd/resterm@latest

[!IMPORTANT] تعتمد ثنائيات Linux المُجمّعة مسبقًا على glibc 2.32 أو أحدث. على توزيعة أقدم، ابنِ من المصدر باستخدام سلسلة أدوات glibc أحدث أو قم بترقية glibc قبل استخدام أرشيفات الإصدارات.

يتم تحديث تثبيتات Homebrew باستخدام brew upgrade resterm. تستخدم الثنائيات من صفحة الإصدارات أو نصوص التثبيت resterm --check-update و resterm --update، والتي تقوم بالتنزيل والتحقق والتثبيت في المكان. على Windows يبقى الثنائي القديم بجانب الجديد باسم resterm.exe.old ويتم تنظيفه في التحديث التالي.

التثبيت اليدوي

تتوفر الثنائيات لـ macOS و Linux و Windows (amd64 و arm64) على صفحة الإصدارات. الأوامر أدناه تفعل نفس الشيء الذي يفعله التنزيل اليدوي من صفحة الإصدارات. يحتاج إصدار Unix إلى curl و jq.

# Find the latest release 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)"

# Install on PATH
chmod +x resterm
sudo install -m 0755 resterm /usr/local/bin/resterm
$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 move to a directory on PATH:
Move-Item resterm.exe "$env:USERPROFILE\bin\resterm.exe"

البدء السريع

mkdir my-api && cd my-api
resterm init
resterm

ينشئ resterm init مشروعًا صغيرًا يمكنك البدء في استخدامه على الفور. يحتوي requests.http المُنشأ على سيناريوهات وهمية محلية وبعض الطلبات التي تُبنى على بعضها البعض، وتغطي التأكيدات، ومصادقة bearer، ومطابقة JSON، و json-rules و @for-each. اضغط g Shift+m لبدء الخادم الوهمي، ثم Ctrl+Enter لإرسال الطلب تحت المؤشر.

يمكنك أيضًا فتح Resterm مباشرة بدون init. شغّل resterm، اكتب عنوان URL واضغط Ctrl+Enter. يمكنك أيضًا لصق أمر curl - هذا يعمل أيضًا.

نفس الملف يعمل بدون TUI:

resterm run --request CreateUser requests.http

ملفات الطلبات

يدعم Resterm صيغة HTTP القياسية، لكنه يتجاوز ذلك بكثير مع توجيهات # @ للتكوين والأتمتة:

# @setting base-url https://api.example.com/v1/

### Create users
// Send this request once for each name in the list.
# @for-each ["david", "tom"] as name
# @when env.mode == "development"
# @assert response.statusCode == 201
POST users
Content-Type: application/json

{"name":"{{= name }}"}

وضع @setting قبل الطلب الأول يطبّق على الملف بأكمله. يبدأ ### طلبًا جديدًا، ويمكن للتوجيهات أن تكرر أو تحدّ أو تتحقق من الطلب أسفلها. المزيد في _examples/ و مرجع التوجيهات.

الخوادم الوهمية

يتم تعريف الاستجابات الوهمية في نفس ملفات الطلبات (لكن ليس بالضرورة). مثال، سيناريوهان على مسار واحد:

### 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

المطابقة على الاستعلام والترويسات والجسم، وتسلسلات الاستجابة لاختبارات الاستقصاء، والتحقق من الاستدعاء وإعادة التحميل الفوري مغطاة في مرجع الخادم الوهمي. مثال عملي: _examples/mocks.http.

تسجيل حركة المرور

يمكنك توجيه تطبيقك عبر وكيل Resterm وسيقوم بالتقاط حركة المرور في ملف Resterm .http، كطلبات أو وهميات أو كليهما.

resterm record --upstream https://api.example.com --out captured.http --mode both

وجّه عنوان URL الأساسي لـ API في تطبيقك إلى http://127.0.0.1:9000، ثم أوقف التسجيل بـ Ctrl+C. تفعل TUI نفس الشيء باستخدام :record start --upstream <origin>، بالإضافة إلى :record as-request و :record as-mock لإدراج الالتقاطات في الملف المفتوح.

المزيد في مرجع التسجيل.

المزيد

المفاتيح

اضغط ? للحصول على مساعدة Resterm العامة و Shift+k للحصول على مساعدة حول ما هو تحت المؤشر. الجدول الكامل في جولة الواجهة. للبدء السريع، تحتاج فقط إلى:

  • Ctrl+Enter يرسل الطلب
  • Tab / Shift+Tab يبدّل الأجزاء
  • g p ينتقل إلى الاستجابة

التوثيق

  • docs/resterm.md يغطي صيغة الطلبات والتوجيهات والبرمجة النصية والنقل.
  • docs/cli.md يغطي resterm run والمستوردين والمجموعات والسجل.
  • docs/restermscript.md هو مرجع RestermScript.
  • التوافق يسرد ما يبقى مستقرًا خلال الإصدار v1.

داخل TUI، يفتح :help <topic> الدليل المدمج و :docs <topic> يفتح النسخة الإلكترونية للإصدار المثبت.

الترخيص

Apache License 2.0.

الفئات