/minreq

Simple, minimal-dependency HTTP client.

Primary LanguageRustISC LicenseISC

minreq

Crates.io Documentation CI

Simple, minimal-dependency HTTP client. Optional features for json responses (json-using-serde), unicode domains (punycode), http proxies (proxy), and https with various TLS implementations (https-rustls, https-rustls-probe, https-bundled, https-bundled-probe,https-native, and https which is an alias for https-rustls).

Without any optional features, my casual testing indicates about 100 KB additional executable size for stripped release builds using this crate. Compiled with rustc 1.45.2, println!("Hello, World!"); is 239 KB on my machine, where the hello example is 347 KB. Both are pure Rust, so aside from libc, everything is statically linked.

Note: some of the dependencies of this crate (especially serde and the various https libraries) are a lot more complicated than this library, and their impact on executable size reflects that.

Planned for 3.0.0

This is a list of features I'll implement once it gets long enough, or a severe enough issue is found that there's good reason to make a major version bump.

  • Change the response/request structs to allow multiple headers with the same name.
  • Set sane defaults for maximum header size and status line length. The ability to add maximums was added in response to #55, but defaults for the limits is a breaking change.
  • Clearer error when making a request to an url that does not start with http:// or https://.
  • Non-exhaustive error type?

License

This crate is distributed under the terms of the ISC license.