10 releases
0.0.10 | Jul 14, 2024 |
---|---|
0.0.9 | Jun 8, 2024 |
0.0.6 | May 20, 2024 |
0.0.5 | Apr 2, 2024 |
0.0.2 | Dec 23, 2023 |
#35 in HTTP client
128 downloads per month
135KB
3K
SLoC
hitt
hitt is a command line HTTP testing tool focused on speed and simplicity.
hitt 0.0.10
command line HTTP testing tool focused on speed and simplicity
Mads Hougesen <mads@mhouge.dk>
Usage: hitt <COMMAND>
Commands:
run Send http request
sse Listen to sse events
completions Generate shell completions
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
Install
hitt can be installed using Cargo.
cargo install hitt --locked
If you do not have Cargo installed, you need to install it first.
Dependencies
hitt
does not require any external dependencies for Windows and macOS user.
Linux users must install openssl
.
Debian and Ubuntu
sudo apt-get install pkg-config libssl-dev
Arch Linux
sudo pacman -S pkg-config openssl
Fedora
sudo dnf install pkg-config perl-FindBin openssl-devel
Alpine Linux
apk add pkgconfig openssl-dev
openSUSE
sudo zypper in libopenssl-devel
Usage
To send a request create a file ending in .http
.
The syntax of .http
files is pretty straightforward:
GET https://mhouge.dk/
The file can then be run using the following command:
hitt run PATH_TO_FILE
That is all that is need to send a request.
Send http request
Usage: hitt run [OPTIONS] <PATH>
Arguments:
<PATH> Path to .http file, or directory if supplied with the `--recursive` argument
Options:
--timeout <TIMEOUT_MS> Request timeout in milliseconds
--var <KEY>=<VALUE> Variables to pass to request
-r, --recursive Enable to run directory recursively
--fail-fast Exit on error response status code
--hide-body Whether or not to show response body
--hide-headers Whether or not to show response headers
--disable-formatting Disable pretty printing of response body
-h, --help Print help
-V, --version Print version
Arguments
Argument | Description |
---|---|
--var <KEY>=<VALUE> |
Variables to pass to request |
--recursive |
Run all files in directory |
--fail-fast |
Exit on status code 4XX or 5xx |
--hide-headers |
Hide response headers |
--hide-body |
Hide response body |
--timeout <TIMEOUT_MS> |
Request timeout in ms |
Request headers
Request headers can be added by writing key value pairs (KEY:VALUE
) on a new line after the method and URL:
GET https://mhouge.dk/
key:value
Leading spaces in the header value is ignored, so KEY: VALUE
and KEY:VALUE
will both have the value VALUE
.
Request body
A body can be sent with the request by creating a blank line, followed by the desired body input.
Please note, hitt does not infer content type. That has to be written as a header.
POST https://mhouge.dk/
content-type:application/json
{
"key": "value"
}
Multiple request in single file
Multiple requests can be written in a single file by adding a line with ###
as a separator:
GET https://mhouge.dk/
###
GET https://mhouge.dk/
Variables
hitt has support for request variables.
A variable can be set in a file using the following syntax @name = VALUE
. Whitespace is ignored.
Variables are used by wrapping the name in curly brackets ({{ name }}
).
@variable_name = localhost
GET {{ variable_name }}/api
In-file variables are not shared between other files.
Variable arguments
Variables can be passed to all requests using the --var <KEY>=<VALUE>
argument:
# file.http
GET {{ host }}/api
The file can the be run:
hitt run --var host=localhost:5000 file.http
Server sent events (SSE)
A SSE listener can be started using the hitt sse
command.
hitt sse https://sse.dev/test
Listen to sse events
Usage: hitt sse <URL>
Arguments:
<URL>
Options:
-h, --help Print help
-V, --version Print version
Shell completions
Shell completions can be generated using mdsf completions <SHELL>
.
Generate shell completions
Usage: hitt completions <SHELL>
Arguments:
<SHELL> [possible values: bash, elvish, fish, powershell, zsh]
Options:
-h, --help Print help
-V, --version Print version
Bash
Add the following to your .bashrc
.
eval "$(mdsf completions bash)"
Bash
Add the following to your .zshrc
.
eval "$(mdsf completions zsh)"
Fish
Add the following to ~/.config/fish/config.fish
.
mdsf completions fish | source
PowerShell
Add the following to your PowerShell configuration (Can be found by running $PROFILE
).
Invoke-Expression (&mdsf completions powershell)
Elvish
Add the following to ~/.elvish/rc.elv
.
eval (mdsf completions elvish)
Neovim
hitt can be run directly from Neovim.
[!NOTE] The
hitt
executable must be available in your path for the plugin to work.
Install
Lazy
local hitt_plugin = {
"hougesen/hitt",
opts = {},
}
Usage
The plugin exposes a single command :HittSendRequest
, which can be bound to a keymap like this:
-- ~/.config/nvim/after/plugin/hitt.lua
local hitt = require("hitt")
vim.keymap.set("n", "<leader>rr", hitt.HittSendRequest, {})
Configuration
Name | Default | Description |
---|---|---|
window_width | 80 | Window width in percentage |
window_height | 80 | Window height in percentage |
fail_fast | false | Enables the --fail-fast options |
HTTP syntax highlighting
Syntax highlighting can be enabled by installing the http
treesitter parser (:TSInstall http
) and adding a file association for .http
files.
vim.filetype.add({
extension = {
http = "http",
},
})
Disclaimer
hitt is most likely not ready for main stream usage. I (Mads Hougesen) am primarily developing it based on features I believe to be useful, or fun to develop.
Dependencies
~12–26MB
~390K SLoC