pub struct RequestBuilder { /* private fields */ }Expand description
A builder to construct the properties of a Request.
To construct a RequestBuilder, refer to the Client documentation.
Implementations§
Source§impl RequestBuilder
impl RequestBuilder
Sourcepub fn from_parts(client: Client, request: Request) -> RequestBuilder
pub fn from_parts(client: Client, request: Request) -> RequestBuilder
Assemble a builder starting from an existing Client and a Request.
Sourcepub fn header<K, V>(self, key: K, value: V) -> RequestBuilderwhere
HeaderName: TryFrom<K>,
HeaderValue: TryFrom<V>,
<HeaderName as TryFrom<K>>::Error: Into<Error>,
<HeaderValue as TryFrom<V>>::Error: Into<Error>,
pub fn header<K, V>(self, key: K, value: V) -> RequestBuilderwhere
HeaderName: TryFrom<K>,
HeaderValue: TryFrom<V>,
<HeaderName as TryFrom<K>>::Error: Into<Error>,
<HeaderValue as TryFrom<V>>::Error: Into<Error>,
Add a Header to this Request.
use reqwest::header::USER_AGENT;
let client = reqwest::blocking::Client::new();
let res = client.get("https://www.rust-lang.org")
.header(USER_AGENT, "foo")
.send()?;Sourcepub fn headers(self, headers: HeaderMap) -> RequestBuilder
pub fn headers(self, headers: HeaderMap) -> RequestBuilder
Add a set of Headers to the existing ones on this Request.
The headers will be merged in to any already set.
use reqwest::header::{HeaderMap, HeaderValue, USER_AGENT, CONTENT_TYPE};
fn construct_headers() -> HeaderMap {
let mut headers = HeaderMap::new();
headers.insert(USER_AGENT, HeaderValue::from_static("reqwest"));
headers.insert(CONTENT_TYPE, HeaderValue::from_static("image/png"));
headers
}
let file = fs::File::open("much_beauty.png")?;
let client = reqwest::blocking::Client::new();
let res = client.post("http://httpbin.org/post")
.headers(construct_headers())
.body(file)
.send()?;Sourcepub fn basic_auth<U, P>(
self,
username: U,
password: Option<P>,
) -> RequestBuilder
pub fn basic_auth<U, P>( self, username: U, password: Option<P>, ) -> RequestBuilder
Enable HTTP basic authentication.
let client = reqwest::blocking::Client::new();
let resp = client.delete("http://httpbin.org/delete")
.basic_auth("admin", Some("good password"))
.send()?;Sourcepub fn bearer_auth<T>(self, token: T) -> RequestBuilderwhere
T: Display,
pub fn bearer_auth<T>(self, token: T) -> RequestBuilderwhere
T: Display,
Enable HTTP bearer authentication.
let client = reqwest::blocking::Client::new();
let resp = client.delete("http://httpbin.org/delete")
.bearer_auth("token")
.send()?;Sourcepub fn body<T>(self, body: T) -> RequestBuilder
pub fn body<T>(self, body: T) -> RequestBuilder
Set the request body.
§Examples
Using a string:
let client = reqwest::blocking::Client::new();
let res = client.post("http://httpbin.org/post")
.body("from a &str!")
.send()?;Using a File:
let file = std::fs::File::open("from_a_file.txt")?;
let client = reqwest::blocking::Client::new();
let res = client.post("http://httpbin.org/post")
.body(file)
.send()?;Using arbitrary bytes:
// from bytes!
let bytes: Vec<u8> = vec![1, 10, 100];
let client = reqwest::blocking::Client::new();
let res = client.post("http://httpbin.org/post")
.body(bytes)
.send()?;Sourcepub fn timeout(self, timeout: Duration) -> RequestBuilder
pub fn timeout(self, timeout: Duration) -> RequestBuilder
Enables a request timeout.
The timeout is applied from when the request starts connecting until the
response body has finished. It affects only this request and overrides
the timeout configured using ClientBuilder::timeout().
Sourcepub fn version(self, version: Version) -> RequestBuilder
pub fn version(self, version: Version) -> RequestBuilder
Set HTTP version
Sourcepub fn json<T>(self, json: &T) -> RequestBuilder
pub fn json<T>(self, json: &T) -> RequestBuilder
Send a JSON body.
Sets the body to the JSON serialization of the passed value, and
also sets the Content-Type: application/json header.
§Optional
This requires the optional json feature enabled.
§Examples
let mut map = HashMap::new();
map.insert("lang", "rust");
let client = reqwest::blocking::Client::new();
let res = client.post("http://httpbin.org")
.json(&map)
.send()?;§Errors
Serialization can fail if T’s implementation of Serialize decides to
fail, or if T contains a map with non-string keys.
Sourcepub fn build(self) -> Result<Request, Error>
pub fn build(self) -> Result<Request, Error>
Build a Request, which can be inspected, modified and executed with
Client::execute().
Sourcepub fn build_split(self) -> (Client, Result<Request, Error>)
pub fn build_split(self) -> (Client, Result<Request, Error>)
Build a Request, which can be inspected, modified and executed with
Client::execute().
This is similar to RequestBuilder::build(), but also returns the
embedded Client.
Sourcepub fn send(self) -> Result<Response, Error>
pub fn send(self) -> Result<Response, Error>
Constructs the Request and sends it the target URL, returning a Response.
§Errors
This method fails if there was an error while sending request, redirect loop was detected or redirect limit was exhausted.
Sourcepub fn try_clone(&self) -> Option<RequestBuilder>
pub fn try_clone(&self) -> Option<RequestBuilder>
Attempts to clone the RequestBuilder.
None is returned if a body is which can not be cloned. This can be because the body is a stream.
§Examples
With a static body
let client = reqwest::blocking::Client::new();
let builder = client.post("http://httpbin.org/post")
.body("from a &str!");
let clone = builder.try_clone();
assert!(clone.is_some());Without a body
let client = reqwest::blocking::Client::new();
let builder = client.get("http://httpbin.org/get");
let clone = builder.try_clone();
assert!(clone.is_some());With a non-cloneable body
let client = reqwest::blocking::Client::new();
let builder = client.get("http://httpbin.org/get")
.body(reqwest::blocking::Body::new(std::io::empty()));
let clone = builder.try_clone();
assert!(clone.is_none());