npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

hitt-cli

v0.0.16

Published

command line HTTP testing tool focused on speed and simplicity

Downloads

37

Readme

hitt

hitt is a command line HTTP testing tool focused on speed and simplicity.

hitt example

hitt 0.0.14
command line HTTP testing tool focused on speed and simplicity
Mads Hougesen <[email protected]>

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, {})

hitt neovim window

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.