10 releases (5 breaking)

0.6.1 Feb 12, 2021
0.6.0 Feb 8, 2021
0.5.0 Feb 7, 2021
0.4.0 Feb 5, 2021
0.1.0 Feb 28, 2018

#262 in HTTP client

MIT license

340KB
1K SLoC

ht

Version info

ht has moved to xh. For more context behind the change, see #1

Yet another HTTPie clone in Rust.

asciicast

Installation

On macOS via Homebrew

brew install ht-rust

On Arch Linux via AUR

ht-bin AUR package

yay -S ht-bin

From binaries

The release page contains prebuilt binaries for Linux, macOS and Windows.

From source

Make sure that you have Rust 1.46 or later installed.

cargo install ht

Usage

ht 0.6.0
USAGE:
    ht [FLAGS] [OPTIONS] <[METHOD] URL> [REQUEST_ITEM]...

FLAGS:
        --offline         Construct HTTP requests without sending them anywhere
    -j, --json            (default) Data items from the command line are serialized as a JSON object
    -f, --form            Data items from the command line are serialized as form fields
    -m, --multipart       Similar to --form, but always sends a multipart/form-data request (i.e., even without files)
    -I, --ignore-stdin    Do not attempt to read stdin
    -F, --follow          Do follow redirects
    -d, --download
    -c, --continue        Resume an interrupted download
    -v, --verbose         Print the whole request as well as the response
    -q, --quiet           Do not print to stdout or stderr
    -S, --stream          Always stream the response body
    -h, --help            Prints help information
    -V, --version         Prints version information

OPTIONS:
    -A, --auth-type <auth-type>              Specify the auth mechanism [possible values: Basic, Bearer]
    -a, --auth <auth>
    -o, --output <output>                    Save output to FILE instead of stdout
        --max-redirects <max-redirects>      Number of redirects to follow, only respected if `follow` is set
    -p, --print <print>                      String specifying what the output should contain
        --pretty <pretty>                    Controls output processing [possible values: All, Colors, Format, None]
    -s, --style <theme>                      Output coloring style [possible values: Auto, Solarized]
        --default-scheme <default-scheme>    The default scheme to use if not specified in the URL

ARGS:
    <[METHOD] URL>       The request URL, preceded by an optional HTTP method
    <REQUEST_ITEM>...    Optional key-value pairs to be included in the request

Request Items

ht uses HTTPie's request-item syntax to set headers, request body, query string, etc.

  • =/:= for setting the request body's JSON fields (= for strings and := for other JSON types).
  • == for adding query strings.
  • @ for including files in multipart requests e.g picture@hello.jpg or picture@hello.jpg;type=image/jpeg.
  • : for adding or removing headers e.g connection:keep-alive or connection:.
  • ; for including headers with empty values e.g header-without-value;.

Examples

# Send a GET request
ht httpbin.org/json

# Send a POST request with body {"name": "ahmed", "age": 24}
ht httpbin.org/post name=ahmed age:=24

# Send a GET request with querystring id=5&sort=true
ht get httpbin.org/json id==5 sort==true

# Send a GET request and include a header named x-api-key with value 12345
ht get httpbin.org/json x-api-key:12345

# Send a PUT request and pipe the result to less
ht put httpbin.org/put id:=49 age:=25 | less

# Download and save to res.json
ht -d httpbin.org/json -o res.json

Syntaxes and themes used

Dependencies

~19–35MB
~600K SLoC