pub struct Request<T> { /* private fields */ }
Expand description
一个HTTP请求。
HTTP请求由头部和可选的正文组成。正文是泛型的,允许任意类型来表示HTTP请求的正文。
Implementations§
Source§impl<T> Request<T>
impl<T> Request<T>
Sourcepub fn new(body: T) -> Request<T>
pub fn new(body: T) -> Request<T>
使用给定的正文创建一个空白的请求。
此请求的头部将被设置为默认值。
§例子
use puzz_http::{Method, Request};
let request = Request::new("hello world");
assert_eq!(*request.method(), Method::GET);
assert_eq!(*request.body(), "hello world");
Sourcepub fn from_head(head: Head, body: T) -> Request<T>
pub fn from_head(head: Head, body: T) -> Request<T>
使用给定的头部和正文创建请求。
§例子
use puzz_http::{Method, Request};
let request = Request::new("hello world");
let (mut head, body) = request.into_head();
head.method = Method::POST;
let request = Request::from_head(head, body);
assert_eq!(request.method(), Method::POST);
assert_eq!(*request.body(), "hello world");
Sourcepub fn method(&self) -> &Method
pub fn method(&self) -> &Method
获取请求的HTTP方法的引用。
§例子
use puzz_http::{Method, Request};
let request: Request<()> = Request::default();
assert_eq!(*request.method(), Method::GET);
Sourcepub fn method_mut(&mut self) -> &mut Method
pub fn method_mut(&mut self) -> &mut Method
获取请求的HTTP方法的可变引用。
§例子
use puzz_http::{Method, Request};
let mut request: Request<()> = Request::default();
*request.method_mut() = Method::PUT;
assert_eq!(*request.method(), Method::PUT);
Sourcepub fn uri(&self) -> &Uri
pub fn uri(&self) -> &Uri
获取请求的URI的引用。
§例子
use puzz_http::Request;
let request: Request<()> = Request::default();
assert_eq!(*request.uri(), *"/");
Sourcepub fn uri_mut(&mut self) -> &mut Uri
pub fn uri_mut(&mut self) -> &mut Uri
获取请求的URI的可变引用。
§例子
use puzz_http::Request;
let mut request: Request<()> = Request::default();
*request.uri_mut() = "/hello".parse().unwrap();
assert_eq!(*request.uri(), *"/hello");
Sourcepub fn version(&self) -> Version
pub fn version(&self) -> Version
获取请求的版本的引用。
§例子
use puzz_http::{Request, Version};
let request: Request<()> = Request::default();
assert_eq!(request.version(), Version::HTTP_11);
Sourcepub fn version_mut(&mut self) -> &mut Version
pub fn version_mut(&mut self) -> &mut Version
获取请求的版本的可变引用。
§例子
use puzz_http::{Request, Version};
let mut request: Request<()> = Request::default();
*request.version_mut() = Version::HTTP_2;
assert_eq!(request.version(), Version::HTTP_2);
Sourcepub fn headers(&self) -> &HeaderMap
pub fn headers(&self) -> &HeaderMap
获取请求的标头集的引用。
§例子
use puzz_http::Request;
let request: Request<()> = Request::default();
assert!(request.headers().is_empty());
Sourcepub fn headers_mut(&mut self) -> &mut HeaderMap
pub fn headers_mut(&mut self) -> &mut HeaderMap
获取请求的标头集的可变引用。
§例子
use puzz_http::Request;
use puzz_http::header::*;
let mut request: Request<()> = Request::default();
request.headers_mut().insert(HOST, HeaderValue::from_static("world"));
assert!(!request.headers().is_empty());
Sourcepub fn extensions(&self) -> &Extensions
pub fn extensions(&self) -> &Extensions
获取请求的扩展的引用。
§例子
use puzz_http::Request;
let request: Request<()> = Request::default();
assert!(request.extensions().get::<i32>().is_none());
Sourcepub fn extensions_mut(&mut self) -> &mut Extensions
pub fn extensions_mut(&mut self) -> &mut Extensions
获取请求的扩展的可变引用。
§例子
use puzz_http::Request;
let mut request: Request<()> = Request::default();
request.extensions_mut().insert("hello");
assert_eq!(request.extensions().get(), Some(&"hello"));
Sourcepub fn body(&self) -> &T
pub fn body(&self) -> &T
获取请求的正文的引用。
§例子
use puzz_http::Request;
let request: Request<String> = Request::default();
assert!(request.body().is_empty());
Sourcepub fn body_mut(&mut self) -> &mut T
pub fn body_mut(&mut self) -> &mut T
获取请求的正文的可变引用。
§例子
use puzz_http::Request;
let mut request: Request<String> = Request::default();
request.body_mut().push_str("hello world");
assert!(!request.body().is_empty());
Sourcepub fn into_body(self) -> T
pub fn into_body(self) -> T
消耗请求,只返回请求的正文。
§例子
use puzz_http::Request;
let request = Request::new(10);
let body = request.into_body();
assert_eq!(body, 10);
Sourcepub fn into_head(self) -> (Head, T)
pub fn into_head(self) -> (Head, T)
消耗请求,返回请求的头部和正文。
§例子
use puzz_http::{Method, Request};
let request = Request::new(());
let (head, body) = request.into_head();
assert_eq!(head.method, Method::GET);
Sourcepub fn map<F, U>(self, f: F) -> Request<U>where
F: FnOnce(T) -> U,
pub fn map<F, U>(self, f: F) -> Request<U>where
F: FnOnce(T) -> U,
消耗请求,返回带有给定正文的新请求,其正文为传入函数的返回值。
§例子
use puzz_http::Request;
let request = Request::builder().body("some string").unwrap();
let mapped_request: Request<&[u8]> = request.map(|b| {
assert_eq!(b, "some string");
b.as_bytes()
});
assert_eq!(mapped_request.body(), &"some string".as_bytes());
Trait Implementations§
Auto Trait Implementations§
impl<T> !Freeze for Request<T>
impl<T> !RefUnwindSafe for Request<T>
impl<T> !Send for Request<T>
impl<T> !Sync for Request<T>
impl<T> Unpin for Request<T>where
T: Unpin,
impl<T> !UnwindSafe for Request<T>
Blanket Implementations§
Source§impl<B> BodyExt for Bwhere
B: Body,
impl<B> BodyExt for Bwhere
B: Body,
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
Mutably borrows from an owned value. Read more