| # reqwest |
| |
| [![crates.io](https://img.shields.io/crates/v/reqwest.svg)](https://crates.io/crates/reqwest) |
| [![Documentation](https://docs.rs/reqwest/badge.svg)](https://docs.rs/reqwest) |
| [![MIT/Apache-2 licensed](https://img.shields.io/crates/l/reqwest.svg)](./LICENSE-APACHE) |
| [![CI](https://github.com/seanmonstar/reqwest/workflows/CI/badge.svg)](https://github.com/seanmonstar/reqwest/actions?query=workflow%3ACI) |
| |
| An ergonomic, batteries-included HTTP Client for Rust. |
| |
| - Plain bodies, JSON, urlencoded, multipart |
| - Customizable redirect policy |
| - HTTP Proxies |
| - HTTPS via system-native TLS (or optionally, rustls) |
| - Cookie Store |
| - WASM |
| - [Changelog](CHANGELOG.md) |
| |
| |
| ## Example |
| |
| This asynchronous example uses [Tokio](https://tokio.rs) and enables some |
| optional features, so your `Cargo.toml` could look like this: |
| |
| ```toml |
| [dependencies] |
| reqwest = { version = "0.11", features = ["json"] } |
| tokio = { version = "1", features = ["full"] } |
| ``` |
| |
| And then the code: |
| |
| ```rust,no_run |
| use std::collections::HashMap; |
| |
| #[tokio::main] |
| async fn main() -> Result<(), Box<dyn std::error::Error>> { |
| let resp = reqwest::get("https://httpbin.org/ip") |
| .await? |
| .json::<HashMap<String, String>>() |
| .await?; |
| println!("{:#?}", resp); |
| Ok(()) |
| } |
| ``` |
| |
| ## Blocking Client |
| |
| There is an optional "blocking" client API that can be enabled: |
| |
| ```toml |
| [dependencies] |
| reqwest = { version = "0.11", features = ["blocking", "json"] } |
| ``` |
| |
| ```rust,no_run |
| use std::collections::HashMap; |
| |
| fn main() -> Result<(), Box<dyn std::error::Error>> { |
| let resp = reqwest::blocking::get("https://httpbin.org/ip")? |
| .json::<HashMap<String, String>>()?; |
| println!("{:#?}", resp); |
| Ok(()) |
| } |
| ``` |
| |
| ## Requirements |
| |
| On Linux: |
| |
| - OpenSSL 1.0.1, 1.0.2, 1.1.0, or 1.1.1 with headers (see https://github.com/sfackler/rust-openssl) |
| |
| On Windows and macOS: |
| |
| - Nothing. |
| |
| Reqwest uses [rust-native-tls](https://github.com/sfackler/rust-native-tls), |
| which will use the operating system TLS framework if available, meaning Windows |
| and macOS. On Linux, it will use OpenSSL 1.1. |
| |
| |
| ## License |
| |
| Licensed under either of |
| |
| - Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://apache.org/licenses/LICENSE-2.0) |
| - MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) |
| |
| ### Contribution |
| |
| Unless you explicitly state otherwise, any contribution intentionally submitted |
| for inclusion in the work by you, as defined in the Apache-2.0 license, shall |
| be dual licensed as above, without any additional terms or conditions. |