# `req` - HTTP Client
`req` is a command line HTTP client, like `curl`, `httpie` and many others. Why another one? This is probably the
most succinct, while still intuitive, client you'll find. Let's see if you agree:
## Examples
```bash
# Get `localhost:5000/`. We assume localhost if the hostname is a bare port.
req :5000
```
Let's send some JSON.
```bash
req :5000/auth/login --json email=test@example.com password=123
# --json sets `content-type`, sets `accept`, sets method to POST, and interprets the rest of the arguments
# as key-value pairs in JSON. And it pretty-prints and colorizes the JSON response.
# All of that behavior is defaulted, but can be overridden.
```
You can also use `--form` which behaves similarly.
Here's a GET request:
```bash
# Because its a GET request, we know additional arguments are query params. These arguments get URL encoded.
req :5000/search q='this is a multi-word query string'
```
Need authentication headers? These all work:
```bash
req --bearer
req -u : # --user also works
req --token
```
We keep the `-O` flag from `curl` for saving files.
# Installation
```bash
cargo install --git https://github.com/kurtbuilds/req
```
# Contributions
Need a feature or have a bug report? Open an issue or a PR.
# Roadmap
- [x] Flag to upload a file