pub struct RequestBuilder { /* private fields */ }Expand description
Builder for constructing Request instances.
Provides a fluent API for building HTTP requests with optional parameters.
§Examples
use reinhardt_http::Request;
use hyper::Method;
let request = Request::builder()
.method(Method::GET)
.uri("/api/users?page=1")
.build()
.unwrap();
assert_eq!(request.method, Method::GET);
assert_eq!(request.path(), "/api/users");
assert_eq!(request.query_params.get("page"), Some(&"1".to_string()));Implementations§
Source§impl RequestBuilder
impl RequestBuilder
Sourcepub fn method(self, method: Method) -> Self
pub fn method(self, method: Method) -> Self
Set the HTTP method.
§Examples
use reinhardt_http::Request;
use hyper::Method;
let request = Request::builder()
.method(Method::POST)
.uri("/api/users")
.build()
.unwrap();
assert_eq!(request.method, Method::POST);Sourcepub fn uri<T>(self, uri: T) -> Self
pub fn uri<T>(self, uri: T) -> Self
Set the request URI.
Accepts either a &str or Uri. Query parameters will be automatically parsed.
§Examples
use reinhardt_http::Request;
use hyper::Method;
let request = Request::builder()
.method(Method::GET)
.uri("/api/users?page=1&limit=10")
.build()
.unwrap();
assert_eq!(request.path(), "/api/users");
assert_eq!(request.query_params.get("page"), Some(&"1".to_string()));
assert_eq!(request.query_params.get("limit"), Some(&"10".to_string()));Sourcepub fn version(self, version: Version) -> Self
pub fn version(self, version: Version) -> Self
Set the HTTP version.
Defaults to HTTP/1.1 if not specified.
§Examples
use reinhardt_http::Request;
use hyper::{Method, Version};
let request = Request::builder()
.method(Method::GET)
.uri("/api/users")
.version(Version::HTTP_2)
.build()
.unwrap();
assert_eq!(request.version, Version::HTTP_2);Sourcepub fn headers(self, headers: HeaderMap) -> Self
pub fn headers(self, headers: HeaderMap) -> Self
Set the request headers.
Replaces all existing headers.
§Examples
use reinhardt_http::Request;
use hyper::{Method, HeaderMap, header};
let mut headers = HeaderMap::new();
headers.insert(header::CONTENT_TYPE, "application/json".parse().unwrap());
let request = Request::builder()
.method(Method::POST)
.uri("/api/users")
.headers(headers.clone())
.build()
.unwrap();
assert_eq!(request.headers.get(header::CONTENT_TYPE).unwrap(), "application/json");Sourcepub fn header<K, V>(self, key: K, value: V) -> Self
pub fn header<K, V>(self, key: K, value: V) -> Self
Add a single header to the request.
§Examples
use reinhardt_http::Request;
use hyper::{Method, header};
let request = Request::builder()
.method(Method::POST)
.uri("/api/users")
.header(header::CONTENT_TYPE, "application/json")
.header(header::AUTHORIZATION, "Bearer token123")
.build()
.unwrap();
assert_eq!(request.headers.get(header::CONTENT_TYPE).unwrap(), "application/json");
assert_eq!(request.headers.get(header::AUTHORIZATION).unwrap(), "Bearer token123");Sourcepub fn body(self, body: Bytes) -> Self
pub fn body(self, body: Bytes) -> Self
Set the request body.
§Examples
use reinhardt_http::Request;
use hyper::Method;
use bytes::Bytes;
let body = Bytes::from(r#"{"name":"Alice"}"#);
let request = Request::builder()
.method(Method::POST)
.uri("/api/users")
.body(body.clone())
.build()
.unwrap();
assert_eq!(request.body(), &body);Sourcepub fn secure(self, is_secure: bool) -> Self
pub fn secure(self, is_secure: bool) -> Self
Set whether the request is secure (HTTPS).
Defaults to false if not specified.
§Examples
use reinhardt_http::Request;
use hyper::Method;
let request = Request::builder()
.method(Method::GET)
.uri("/")
.secure(true)
.build()
.unwrap();
assert!(request.is_secure());
assert_eq!(request.scheme(), "https");Sourcepub fn remote_addr(self, addr: SocketAddr) -> Self
pub fn remote_addr(self, addr: SocketAddr) -> Self
Set the remote address of the client.
§Examples
use reinhardt_http::Request;
use hyper::Method;
use std::net::{SocketAddr, IpAddr, Ipv4Addr};
let addr = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
let request = Request::builder()
.method(Method::GET)
.uri("/")
.remote_addr(addr)
.build()
.unwrap();
assert_eq!(request.remote_addr, Some(addr));Sourcepub fn parser<P: Parser + 'static>(self, parser: P) -> Self
pub fn parser<P: Parser + 'static>(self, parser: P) -> Self
Add a parser to the request.
Parsers are used to parse the request body into specific formats. The parser will be boxed internally.
§Examples
use reinhardt_http::Request;
use hyper::Method;
let request = Request::builder()
.method(Method::POST)
.uri("/api/users")
.parser(JsonParser::new())
.build()
.unwrap();Sourcepub fn path_params(self, params: HashMap<String, String>) -> Self
pub fn path_params(self, params: HashMap<String, String>) -> Self
Set path parameters (used for testing views without router).
This is primarily useful in test environments where you need to simulate path parameters that would normally be extracted by the router.
§Examples
use reinhardt_http::Request;
use hyper::Method;
use std::collections::HashMap;
let mut params = HashMap::new();
params.insert("id".to_string(), "42".to_string());
let request = Request::builder()
.method(Method::GET)
.uri("/api/users/42")
.path_params(params)
.build()
.unwrap();
assert_eq!(request.path_params.get("id"), Some(&"42".to_string()));Sourcepub fn build(self) -> Result<Request, String>
pub fn build(self) -> Result<Request, String>
Build the final Request instance.
Returns an error if the URI is missing.
§Examples
use reinhardt_http::Request;
use hyper::Method;
let request = Request::builder()
.method(Method::GET)
.uri("/api/users")
.build()
.unwrap();
assert_eq!(request.method, Method::GET);
assert_eq!(request.path(), "/api/users");Trait Implementations§
Auto Trait Implementations§
impl !Freeze for RequestBuilder
impl !RefUnwindSafe for RequestBuilder
impl Send for RequestBuilder
impl Sync for RequestBuilder
impl Unpin for RequestBuilder
impl UnsafeUnpin for RequestBuilder
impl !UnwindSafe for RequestBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian().