16 releases
0.0.16 | Oct 2, 2024 |
---|---|
0.0.11 | Aug 6, 2024 |
0.0.10 | Jul 14, 2024 |
0.0.4 | Feb 6, 2024 |
0.0.2 | Dec 23, 2023 |
#44 in HTTP client
135KB
3K
SLoC
hitt
hitt is a command line HTTP testing tool focused on speed and simplicity.
hitt 0.0.14
command line HTTP testing tool focused on speed and simplicity
Mads Hougesen <mads@mhouge.dk>
Usage: hitt <COMMAND>
Commands:
run Send http requests
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
Linux & MacOS
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/hougesen/hitt/releases/latest/download/hitt-installer.sh | sh
Windows
powershell -ExecutionPolicy ByPass -c "irm https://github.com/hougesen/hitt/releases/latest/download/hitt-installer.ps1 | iex"
Cargo
hitt can be installed using Cargo.
cargo install hitt --locked
If you do not have Cargo installed, you need to install it first.
npm/npx
You can install hitt using npm:
npm install -g hitt-cli
hitt-cli run hello-world.http
or run it directly using npx:
npx hitt-cli run hello-world.http
Homebrew
brew install hougesen/tap/hitt
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 requests
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 hitt 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 "$(hitt completions bash)"
Bash
Add the following to your .zshrc
.
eval "$(hitt completions zsh)"
Fish
Add the following to ~/.config/fish/config.fish
.
hitt completions fish | source
PowerShell
Add the following to your PowerShell configuration (Can be found by running $PROFILE
).
Invoke-Expression (&hitt completions powershell)
Elvish
Add the following to ~/.elvish/rc.elv
.
eval (hitt 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
~14–32MB
~542K SLoC