[package]
name = "tower-http-client"
description = "Extra Tower middlewares and utilities for HTTP clients."
documentation = "https://docs.rs/crate/tower-http-client"
readme = "README.md"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
repository.workspace = true
license.workspace = true
keywords.workspace = true
categories.workspace = true
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[dependencies]
bytes = { workspace = true }
futures-util = { workspace = true }
http = { workspace = true }
http-body-reader = { workspace = true }
http-body-util = { workspace = true }
include-utils = { workspace = true }
thiserror = { workspace = true }
tower = { workspace = true, default-features = false, features = ["util"] }
tower-layer = { workspace = true }
tower-service = { workspace = true }
headers = { workspace = true, optional = true }
serde = { workspace = true, optional = true }
serde_json = { workspace = true, optional = true }
serde_urlencoded = { workspace = true, optional = true }
url = { workspace = true, optional = true }
[dev-dependencies]
anyhow = { workspace = true }
async-trait = { workspace = true }
axum = { workspace = true }
criterion = { workspace = true, features = ["async_tokio"] }
pretty_assertions = { workspace = true }
reqwest = { workspace = true, features = ["json"] }
reqwest-middleware = { workspace = true }
retry-policies = { workspace = true }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
tokio = { workspace = true }
tower = { workspace = true, features = ["buffer", "limit", "retry", "util"] }
tower-http = { workspace = true, features = [
"map-request-body",
"map-response-body",
"set-header",
"util",
] }
tower-reqwest = { workspace = true }
wiremock = { workspace = true }
[features]
default = ["url", "form", "json", "typed-header", "query", "rewrite-uri"]
form = ["dep:serde", "dep:serde_urlencoded", "http-body-reader/form"]
json = ["dep:serde", "dep:serde_json", "http-body-reader/json"]
url = ["dep:url"]
typed-header = ["dep:headers"]
query = ["dep:serde", "dep:serde_urlencoded"]
rewrite-uri = []
[[example]]
name = "send_json"
required-features = ["json"]
[[example]]
name = "send_form"
required-features = ["form"]
[[example]]
name = "boxed_client"
required-features = ["json"]
[[example]]
name = "rewrite_uri"
required-features = ["rewrite-uri"]
[[bench]]
harness = false
name = "client"
required-features = ["json"]
[lints]
workspace = true