Skip to content

MFAIZAN20/zapreq

Repository files navigation

zapreq

Crates.io CI License

zapreq is a Rust-based HTTP client for API workflows. It provides a fast command-line interface for sending requests, plus local tooling for saved requests, environment profiles, regression testing, security scanning, performance benchmarking, notes, a terminal UI, and a Tauri desktop app.

Highlights

  • Fast native CLI with HTTPie-style request syntax
  • Support for JSON, forms, multipart uploads, sessions, and authentication
  • Saved requests, collections, and environment profiles for repeatable workflows
  • Built-in regression testing, response diffing, performance benchmarks, and security checks
  • Local-first tooling with TUI and desktop interfaces on top of the same core engine

Installation

Cargo

cargo install zapreq

Prebuilt Binaries

Release binaries for Linux, macOS, and Windows are available on the GitHub releases page.

Quick Start

# Simple request
zapreq GET https://httpbin.org/get

# JSON body fields
zapreq POST https://httpbin.org/post name="Faizan" active:=true

# Custom headers and query parameters
zapreq GET https://httpbin.org/get X-API-Token:secret page==1 limit==20

# Persist a session
zapreq --session dev-user POST https://api.example.com/login username=faizan password=secret

# Save and rerun a request
zapreq save get-user GET https://api.example.com/users/1
zapreq run get-user

Request Syntax

zapreq interprets request items by operator:

Operator Meaning Example
: Header Authorization:Bearer token
= String field name=faizan
:= Raw JSON field active:=true
== Query parameter page==2
@ File upload avatar@/tmp/avatar.png
=@ String from file body=@./payload.txt
:=@ JSON from file config:=@./payload.json

Run zapreq --help for the full CLI surface.

Core Commands

# Saved requests
zapreq save <alias> <request...>
zapreq run <alias>
zapreq list

# Collections and request workspaces
zapreq collections list
zapreq requests save <workspace> <name> -- <request...>
zapreq requests run <workspace> <request>

# Validation and analysis
zapreq test --expect-status 200 -- GET https://httpbin.org/get
zapreq regression run <suite>
zapreq security scan --alias <saved-request>
zapreq perf benchmark --alias <saved-request>
zapreq diff <url-a> <url-b>

Development

Prerequisites

  • Rust stable toolchain
  • Node.js for the desktop frontend

Common Commands

# Run the CLI locally
cargo run -- --help

# Run tests
cargo test

# Frontend dependencies
cd frontend && npm install

# Start the desktop app from the repository root
npm run dev

Project Structure

  • src/: core CLI, request engine, testing, security, storage, and TUI code
  • frontend/: React frontend for the desktop app
  • src-tauri/: Tauri host application
  • tests/: integration and CLI tests

Contributing

Contributions are welcome. For documentation, bug fixes, and feature work:

  1. Create a branch from main.
  2. Make focused changes with tests where applicable.
  3. Run cargo test before opening a pull request.

License

Licensed under either of the following, at your option:

About

A fast Rust HTTP client for API workflows, with CLI, TUI, desktop GUI, saved requests, testing, security scans, and benchmarking.

https://docs.rs/zapreq

Topics

Resources

License

MIT and 2 other licenses found

Licenses found

MIT
LICENSE
Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

2 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors