A netcat-like tool for analysing or mocking HTTP requests.
| src | 3 years ago | ||
| README.md | 3 years ago | ||
A netcat like tool for analysing/mocking HTTP requests (from both server and client perspective). My first experiment with Go.
httpcat [OPTIONS] <command>
Application Options:
  -v,    --verbose       Show additional details
        --headers       Show headers and request/status line only (default is everything)
        --bodies        Show bodies only (default is everything)
        --nocolour      Don't use colours (default is requests are blue and responses are red)
        --notimestamps  Don't show timestamps
Help Options:
  -h, --help          Show this help message
Available commands:
  client   Send an HTTP request
  proxy    Start a reverse HTTP logging proxy
  server   Start a mock HTTP server
  version  Display version
Get help about a specific command by adding --help after the command. Example:
httpcat client --help
Sends a request to the specified server and displays the response.
httpcat [OPTIONS] client [client-OPTIONS]
Application Options:
  -v, --verbose       Show additional details
      --headers       Show headers and request/status line only (default is everything)
      --bodies        Show bodies only (default is everything)
      --nocolour      Don't use colours (default is requests are blue and responses are red)
      --notimestamps  Don't show timestamps
Help Options:
  -h, --help          Show this help message
[client command options]
      -u, --uri=      The URI to send the request to
          --header=   A header to add to request in the form name:value. Use multiple times for multiple headers.
      -m, --method=   HTTP method for request (default: GET)
      -b, --body=     Request body to send
httpcat client --method POST --body TESTING --uri http://localhost:8080/api/testing
Creates mock routes that listen on specific paths and return specific response bodies. Displays the details of any requests that it receives.
httpcat [OPTIONS] server [server-OPTIONS]
Application Options:
  -v, --verbose       Show additional details
      --headers       Show headers and request/status line only (default is everything)
      --bodies        Show bodies only (default is everything)
      --nocolour      Don't use colours (default is requests are blue and responses are red)
      --notimestamps  Don't show timestamps
Help Options:
  -h, --help          Show this help message
[server command options]
      -p, --port=     Port to listen on. (default: 8080)
      -r, --route=    Route which is made up of a path, a response body, and a response status, all separated by the pipe character.  Repeat for additional routes. (default: /|testing|200)
      -c, --cors      Enable Cross Origin Resource Sharing (CORS).
      -H, --header=   A header to add to response in the form name:value. Repeat for additional headers.
httpcat server --port 8080 --route "/hello|Hello World|200" --header "Content-Type:text/plain"
This creates a web server that listens on port 8080 and responds to any requests to the /hello path with the response Hello World and response code 200. Repeat the --route option to add more routes.
Creates a reverse proxy that displays all HTTP requests and responses that pass through it.
httpcat [OPTIONS] proxy [proxy-OPTIONS]
Application Options:
  -v, --verbose       Show additional details
      --headers       Show headers and request/status line only (default is everything)
      --bodies        Show bodies only (default is everything)
      --nocolour      Don't use colours (default is requests are blue and responses are red)
      --notimestamps  Don't show timestamps
Help Options:
  -h, --help          Show this help message
[proxy command options]
      -p, --port=     The port that the proxy listens on.
      -t, --target=
httpcat proxy --port 8090 --target http://localhost:8080
Any requests sent to port 8090 will be forwarded to http://localhost:8080 and all requests and responses will be displayed.
cd src go build -o ../httpcat
Linux
GOOS=linux GOARCH=amd64 go build -o ../httpcat-linux
Windows
GOOS=windows GOARCH=amd64 go build -o ../httpcat-win64
Intel Mac
GOOS=darwin GOARCH=amd64 go build -o ../httpcat-mac-intel
M1/ARM64 Mac
GOOS=darwin GOARCH=arm64 go build -o ../httpcat-mac-arm64