What HTTPie Does
- Simple syntax —
http GET urlinstead ofcurl -X GET url - JSON by default —
key=valuebuilds JSON request body - Colorized output — syntax-highlighted response
- Sessions — persist cookies and auth across requests
- File uploads —
file@pathsyntax - Downloads —
--downloadflag - Auth — Basic, Bearer, Digest, HAWK
- Plugins — auth, transport, formatter plugins
- Offline mode — preview what would be sent
- HTTPS — verify certs, client certs
Architecture
Python-based CLI wrapping the Requests library (and newer python-httpx under the hood). Custom parser for the intuitive request syntax. Pygments for output highlighting.
Self-Hosting
CLI tool, Python package.
Key Features
- Human-friendly syntax
- JSON-first
- Colorized and formatted output
- Sessions
- Plugin architecture
- File uploads
- Downloads with progress bar
- Local and remote HTTPS
- Offline request preview
Comparison
| Tool | Syntax | JSON | Colors |
|---|---|---|---|
| HTTPie | Intuitive | Native | Yes |
| curl | POSIX | Manual | No |
| wget | POSIX | Manual | No |
| xh | Intuitive (fork) | Native | Yes (Rust) |
| Hurl | Own DSL | Native | Yes |
FAQ
Q: How does it compare to curl? A: curl is the Swiss Army knife (uploads, socks, HTTP2/3, all kinds of low-level options); HTTPie is human-friendly (REST/JSON interaction). Use HTTPie for daily API debugging and curl for low-level details.
Q: Is there something faster? A: xh (a Rust rewrite, faster startup, HTTPie-compatible syntax), but HTTPie has a larger plugin ecosystem.
Q: Does it support GraphQL? A: Yes. Use httpie-plugin-graphql or just POST a JSON body directly.
Sources
- Docs: https://httpie.io/docs
- GitHub: https://github.com/httpie/cli
- License: BSD 3-Clause