reqwest
An easy and powerful Rust HTTP Client
The most popular Rust library for making HTTP requests, with async and blocking clients, built-in HTTPS via rustls, JSON support, file uploads, cookies, and proxy handling.
reqwest is a Rust library for making HTTP requests. If your Rust program needs to fetch a webpage, call an API, or send data to a server, reqwest is the tool most Rust developers reach for first. It provides both an asynchronous client (which lets your program do other work while waiting for a response) and a blocking client (which waits for each response before continuing, useful for simpler scripts).
Out of the box, reqwest handles plain text responses, JSON payloads, form-encoded data, file uploads via multipart forms, cookies, and HTTP proxies. For HTTPS, it ships with a secure TLS library called rustls built in, so encrypted connections work without installing anything extra. If you prefer to use your operating system's own TLS support, that option is available on Windows and macOS. On Linux, it falls back to OpenSSL.
A typical use case looks like this: make a GET request to a URL, wait for the response, parse the body as JSON, and use the result in your code. The README includes a minimal working example of exactly that, including the two dependency lines to add to your project's configuration file. The library integrates with Tokio, the most common async runtime in Rust.
The README is intentionally brief and does not cover all configuration options. Full API documentation lives at docs.rs/reqwest and covers redirect policies, timeouts, custom headers, and other details. The project is available under both Apache 2.0 and MIT licenses, meaning you can use it in most commercial or open-source projects without restriction.
Where it fits
- Fetch JSON from a REST API inside a Rust async application running on Tokio.
- Upload files via multipart form POST in a Rust command-line tool.
- Make authenticated HTTPS requests with custom headers and configurable redirect policies in Rust.