
resterm v1.5.6
HTTP, GraphQL 및 gRPC용 터미널 API 클라이언트. diff 및 버전 관리가 가능한 일반 .http 파일로, 워크플로, 목(mocks), 프로파일링, 추적(tracing), OpenAPI 가져오기, SSH 터널, Kubernetes 포트 포워딩, WebSocket, SSE 및 CLI 러너를 지원합니다.
Resterm
터미널을 위한 API-as-code 워크벤치.
트레이스 및 타임라인 보기
Resterm은 요청을 평범한 .http 및 .rest 파일에 저장하는 API 클라이언트로, 다른 코드와 마찬가지로 저장소에 나란히 둘 수 있습니다. 터미널 UI를 사용하거나, 동일한 파일을 CI에서 resterm run으로 실행할 수 있습니다.
빠른 링크: 스크린샷, 설치, 빠른 시작, 요청 파일, 문서.
스크린샷
UI가 동작하는 모습 보기 (클릭하여 펼치기)
워크플로
프로파일러
설명
RestermScript
Resterm을 사용하는 이유
- HTTP, GraphQL, gRPC, WebSocket 및 SSE 지원.
- 요청 파일 내 자동화: 조건(
@when,@if/@elif/@else,@for-each), 다단계 워크플로(@workflow/@step), 캡처, 변수 및 검증(@capture,@var,@assert). - 요청 파일 내 터널:
@ssh와@k8s는 요청을 SSH 배스천 또는 Kubernetes 포트 포워드를 통해 라우팅하며, Resterm이 이를 열고 닫습니다. 파일 또는 워크스페이스별 프로파일을 지원합니다. - HTTP 트래픽 기록 후 Resterm
.http파일로 요청 또는 목 응답 형태로 내보내기. - RestermScript, Resterm을 위해 만들어진 작은 표현식 언어로, 필요할 때 JavaScript 훅을 사용할 수 있습니다.
- Vim 스타일 컨트롤과 단축키 힌트, 검색 가능한 오프라인 도움말, 커서 아래에서
Shift+k도움말,/검색 및:w,:q,:help,:docs같은 명령어. - 인증: OAuth 2.0(클라이언트 자격 증명, 비밀번호, PKCE를 사용한 인증 코드) 및 이미 설치된 CLI에서 토큰을 재사용하는
@auth command(예:gh auth token). - CLI 러너: 스크립트 실행 및 CI를 위한
resterm run, JSON 및 JUnit 출력 지원. - 목 서버를 모방하는 요청 옆에 선언하며, 매칭 규칙, 시퀀스, 호출 검증 및 핫 리로드 지원.
- 타임라인 트레이싱, 프로파일링 및 환경 간 실행 비교.
- 스트리밍 트랜스크립트와 WebSocket 및 SSE를 위한 대화형 콘솔.
- AI 통합 없음
설치
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에는 로컬 목 시나리오와 서로를 기반으로 하는 몇 가지 요청이 있으며, 검증, 베어러 인증, JSON 매칭, json-rules 및 @for-each를 다룹니다. g Shift+m을 눌러 목 서버를 시작한 다음, Ctrl+Enter로 커서 아래의 요청을 전송하세요.
init 없이 Resterm을 직접 열 수도 있습니다. 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
애플리케이션의 API 기본 URL을 http://127.0.0.1:9000으로 지정한 다음, Ctrl+C로 기록을 중지하세요. TUI에서는 :record start --upstream <origin>으로 동일하게 수행하며, :record as-request와 :record as-mock으로 캡처를 열린 파일에 삽입할 수 있습니다.
더 많은 내용은 기록 레퍼런스에서 확인하세요.
더 보기
| 영역 | 문서 |
|---|---|
| 자동화 | 워크플로, 폴링 및 재시도, 실행 비교, 타임라인 및 트레이싱, 프로파일링 |
| 전송 | gRPC, GraphQL, WebSocket 및 SSE |
| 인증 및 연결 | OAuth 2.0, 자체 CLI에서 인증, SSH 터널, Kubernetes 포트 포워드 |
| 스크립팅 | RestermScript, JavaScript 훅, 헤드리스 Go API, resterm-runner |
| 가져오기 및 내보내기 | curl 가져오기, OpenAPI 가져오기, 컬렉션 공유, 응답 기록 및 비교 |
| 설정 | 환경 및 변수, 구성, 테마, 키 바인딩 |
키
?를 누르면 일반 Resterm 도움말이, Shift+k를 누르면 커서 아래에 있는 항목에 대한 도움말이 표시됩니다. 전체 표는 UI 투어에 있습니다. 빠른 시작을 위해서는 다음만 있으면 됩니다:
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>은 설치된 릴리스의 웹 버전을 엽니다.