Yet another HTTPie clone in Rust.
brew install xh
scoop install xh
pacman -S xh
The release page contains prebuilt binaries for Linux, macOS and Windows.
Make sure that you have Rust 1.46 or later installed.
cargo install xh
xh 0.7.0
USAGE:
xh [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
-h, --headers Print only the response headers, shortcut for --print=h
-b, --body Print only the response body, Shortcut for --print=b
-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
--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
xh
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.gpicture@hello.jpg
orpicture@hello.jpg;type=image/jpeg
.:
for adding or removing headers e.gconnection:keep-alive
orconnection:
.;
for including headers with empty values e.gheader-without-value;
.
# Send a GET request
xh httpbin.org/json
# Send a POST request with body {"name": "ahmed", "age": 24}
xh httpbin.org/post name=ahmed age:=24
# Send a GET request with querystring id=5&sort=true
xh get httpbin.org/json id==5 sort==true
# Send a GET request and include a header named x-api-key with value 12345
xh get httpbin.org/json x-api-key:12345
# Send a PUT request and pipe the result to less
xh put httpbin.org/put id:=49 age:=25 | less
# Download and save to res.json
xh -d httpbin.org/json -o res.json