# HTTPie CLI — Modern User-Friendly Command-Line HTTP Client > HTTPie is a modern, user-friendly command-line HTTP client for the API era. Intuitive syntax, formatted and colorized output, JSON support, sessions, authentication, file uploads, and plugins. The friendly alternative to curl for API exploration. ## Install Save as a script file and run: ## Quick Use ```bash # Install brew install httpie # macOS sudo apt install httpie # Debian/Ubuntu pip install httpie # Python ``` Basic usage: ```bash http GET https://api.github.com/users/williamwangai http POST https://api.example.com/users name=William email=w@example.com http PUT https://api.example.com/users/1 name=Alice http DELETE https://api.example.com/users/1 # Headers http GET https://api.example.com Authorization:"Bearer token" X-Custom:value # JSON body http POST api.example.com/users <<<"{\"name\":\"William\"}" # File upload http --form POST api.example.com/upload file@./photo.jpg # Download http --download https://example.com/file.zip # Sessions (persist cookies/auth) http --session=work api.example.com/login name=william password=secret http --session=work api.example.com/me ``` ## Intro HTTPie is a modern command-line HTTP client designed for humans. Its goal is to make CLI interaction with web services as human-friendly as possible. Provides a simple http command that allows for sending arbitrary HTTP requests using a simple and natural syntax, and displays colorized output. - **Repo**: https://github.com/httpie/cli - **Stars**: 37K+ - **Language**: Python - **License**: BSD 3-Clause ## What HTTPie Does - **Simple syntax** — `http GET url` instead of `curl -X GET url` - **JSON by default** — `key=value` builds JSON request body - **Colorized output** — syntax-highlighted response - **Sessions** — persist cookies and auth across requests - **File uploads** — `file@path` syntax - **Downloads** — `--download` flag - **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: 和 curl 对比?** A: curl 是万能的(上传、socks、HTTP2/3、各种低层选项),HTTPie 是人性化的(REST/JSON 交互友好)。日常 API 调试用 HTTPie,底层细节用 curl。 **Q: 有没有更快的?** A: 有 xh(Rust 重写,启动更快,兼容 HTTPie 语法),但 HTTPie 插件生态更大。 **Q: 支持 GraphQL 吗?** A: 支持。有 httpie-plugin-graphql 或直接发 POST JSON body。 ## 来源与致谢 Sources - Docs: https://httpie.io/docs - GitHub: https://github.com/httpie/cli - License: BSD 3-Clause --- Source: https://tokrepo.com/en/workflows/224cd323-35d4-11f1-9bc6-00163e2b0d79 Author: Script Depot