Struct HttpRequest
pub struct HttpRequest { /* private fields */ }
Expand description
An incoming request.
Implementations§
§impl HttpRequest
impl HttpRequest
pub fn head(&self) -> &RequestHead
pub fn head(&self) -> &RequestHead
This method returns reference to the request head
pub fn full_url(&self) -> Url
pub fn full_url(&self) -> Url
Returns request’s original full URL.
Reconstructed URL is best-effort, using connection_info
to get forwarded scheme & host.
use actix_web::test::TestRequest;
let req = TestRequest::with_uri("http://10.1.2.3:8443/api?id=4&name=foo")
.insert_header(("host", "example.com"))
.to_http_request();
assert_eq!(
req.full_url().as_str(),
"http://example.com/api?id=4&name=foo",
);
pub fn headers(&self) -> &HeaderMap
pub fn headers(&self) -> &HeaderMap
Returns request’s headers.
pub fn query_string(&self) -> &str
pub fn query_string(&self) -> &str
The query string in the URL.
Example: id=10
pub fn match_info(&self) -> &Path<Url>
pub fn match_info(&self) -> &Path<Url>
Returns a reference to the URL parameters container.
A URL parameter is specified in the form {identifier}
, where the identifier can be used
later in a request handler to access the matched value for that parameter.
§Percent Encoding and URL Parameters
Because each URL parameter is able to capture multiple path segments, none of
["%2F", "%25", "%2B"]
found in the request URI are decoded into ["/", "%", "+"]
in order
to preserve path integrity. If a URL parameter is expected to contain these characters, then
it is on the user to decode them or use the web::Path
extractor which
will decode these special sequences.
pub fn match_pattern(&self) -> Option<String>
pub fn match_pattern(&self) -> Option<String>
The resource definition pattern that matched the path. Useful for logging and metrics.
For example, when a resource with pattern /user/{id}/profile
is defined and a call is made
to /user/123/profile
this function would return Some("/user/{id}/profile")
.
Returns a None when no resource is fully matched, including default services.
pub fn match_name(&self) -> Option<&str>
pub fn match_name(&self) -> Option<&str>
The resource name that matched the path. Useful for logging and metrics.
Returns a None when no resource is fully matched, including default services.
pub fn conn_data<T>(&self) -> Option<&T>where
T: 'static,
pub fn conn_data<T>(&self) -> Option<&T>where
T: 'static,
Returns a reference a piece of connection data set in an on-connect callback.
let opt_t = req.conn_data::<PeerCertificate>();
pub fn url_for<U, I>(
&self,
name: &str,
elements: U,
) -> Result<Url, UrlGenerationError>
pub fn url_for<U, I>( &self, name: &str, elements: U, ) -> Result<Url, UrlGenerationError>
Generates URL for a named resource.
This substitutes in sequence all URL parameters that appear in the resource itself and in parent scopes, if any.
It is worth noting that the characters ['/', '%']
are not escaped and therefore a single
URL parameter may expand into multiple path segments and elements
can be percent-encoded
beforehand without worrying about double encoding. Any other character that is not valid in
a URL path context is escaped using percent-encoding.
§Examples
fn index(req: HttpRequest) -> HttpResponse {
let url = req.url_for("foo", &["1", "2", "3"]); // <- generate URL for "foo" resource
HttpResponse::Ok().into()
}
let app = App::new()
.service(web::resource("/test/{one}/{two}/{three}")
.name("foo") // <- set resource name so it can be used in `url_for`
.route(web::get().to(|| HttpResponse::Ok()))
);
pub fn url_for_static(&self, name: &str) -> Result<Url, UrlGenerationError>
pub fn url_for_static(&self, name: &str) -> Result<Url, UrlGenerationError>
Generate URL for named resource
This method is similar to HttpRequest::url_for()
but it can be used
for urls that do not contain variable parts.
pub fn resource_map(&self) -> &ResourceMap
pub fn resource_map(&self) -> &ResourceMap
Get a reference to a ResourceMap
of current application.
pub fn peer_addr(&self) -> Option<SocketAddr>
pub fn peer_addr(&self) -> Option<SocketAddr>
Returns peer socket address.
Peer address is the directly connected peer’s socket address. If a proxy is used in front of the Actix Web server, then it would be address of this proxy.
For expanded client connection information, use connection_info
instead.
Will only return None when called in unit tests unless TestRequest::peer_addr
is used.
pub fn connection_info(&self) -> Ref<'_, ConnectionInfo>
pub fn connection_info(&self) -> Ref<'_, ConnectionInfo>
Returns connection info for the current request.
The return type, [ConnectionInfo
], can also be used as an extractor.
§Panics
Panics if request’s extensions container is already borrowed.
pub fn app_config(&self) -> &AppConfig
pub fn app_config(&self) -> &AppConfig
Returns a reference to the application’s connection configuration.
pub fn app_data<T>(&self) -> Option<&T>where
T: 'static,
pub fn app_data<T>(&self) -> Option<&T>where
T: 'static,
Retrieves a piece of application state.
Extracts any object stored with App::app_data()
(or the
counterpart methods on Scope
and
Resource
) during application configuration.
Since the Actix Web router layers application data, the returned object will reference the
“closest” instance of the type. For example, if an App
stores a u32
, a nested Scope
also stores a u32
, and the delegated request handler falls within that Scope
, then
calling .app_data::<u32>()
on an HttpRequest
within that handler will return the
Scope
’s instance. However, using the same router set up and a request that does not get
captured by the Scope
, .app_data::<u32>()
would return the App
’s instance.
If the state was stored using the Data
wrapper, then it must also be retrieved using
this same type.
See also the Data
extractor.
§Examples
let opt_t: Option<&Data<T>> = req.app_data::<Data<T>>();
Trait Implementations§
§impl Apiv2Schema for HttpRequest
impl Apiv2Schema for HttpRequest
§fn name() -> Option<String>
fn name() -> Option<String>
§fn description() -> &'static str
fn description() -> &'static str
§fn raw_schema() -> DefaultSchemaRaw
fn raw_schema() -> DefaultSchemaRaw
§fn schema_with_ref() -> DefaultSchemaRaw
fn schema_with_ref() -> DefaultSchemaRaw
§fn security_scheme() -> Option<SecurityScheme>
fn security_scheme() -> Option<SecurityScheme>
fn header_parameter_schema() -> Vec<Parameter<DefaultSchemaRaw>>
§impl Clone for HttpRequest
impl Clone for HttpRequest
§fn clone(&self) -> HttpRequest
fn clone(&self) -> HttpRequest
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more§impl Debug for HttpRequest
impl Debug for HttpRequest
§impl FromRequest for HttpRequest
impl FromRequest for HttpRequest
It is possible to get HttpRequest
as an extractor handler parameter
§Examples
use actix_web::{web, App, HttpRequest};
use serde::Deserialize;
/// extract `Thing` from request
async fn index(req: HttpRequest) -> String {
format!("Got thing: {:?}", req)
}
let app = App::new().service(
web::resource("/users/{first}").route(
web::get().to(index))
);
§type Future = Ready<Result<HttpRequest, Error>>
type Future = Ready<Result<HttpRequest, Error>>
Self
. Read more§fn from_request(
req: &HttpRequest,
_: &mut Payload,
) -> <HttpRequest as FromRequest>::Future
fn from_request( req: &HttpRequest, _: &mut Payload, ) -> <HttpRequest as FromRequest>::Future
Self
from request parts asynchronously.§fn extract(req: &HttpRequest) -> Self::Future
fn extract(req: &HttpRequest) -> Self::Future
Self
from request head asynchronously. Read more§impl HttpMessage for HttpRequest
impl HttpMessage for HttpRequest
§fn extensions(&self) -> Ref<'_, Extensions>
fn extensions(&self) -> Ref<'_, Extensions>
§fn extensions_mut(&self) -> RefMut<'_, Extensions>
fn extensions_mut(&self) -> RefMut<'_, Extensions>
§fn take_payload(&mut self) -> Payload<<HttpRequest as HttpMessage>::Stream>
fn take_payload(&mut self) -> Payload<<HttpRequest as HttpMessage>::Stream>
§fn content_type(&self) -> &str
fn content_type(&self) -> &str
§fn encoding(&self) -> Result<&'static Encoding, ContentTypeError>
fn encoding(&self) -> Result<&'static Encoding, ContentTypeError>
§impl OperationModifier for HttpRequest
impl OperationModifier for HttpRequest
§fn update_parameter(
op: &mut Operation<Parameter<DefaultSchemaRaw>, Response<DefaultSchemaRaw>>,
)
fn update_parameter( op: &mut Operation<Parameter<DefaultSchemaRaw>, Response<DefaultSchemaRaw>>, )
§fn update_response(
_op: &mut Operation<Parameter<DefaultSchemaRaw>, Response<DefaultSchemaRaw>>,
)
fn update_response( _op: &mut Operation<Parameter<DefaultSchemaRaw>, Response<DefaultSchemaRaw>>, )
§fn update_definitions(map: &mut BTreeMap<String, DefaultSchemaRaw>)
fn update_definitions(map: &mut BTreeMap<String, DefaultSchemaRaw>)
§fn update_security(
op: &mut Operation<Parameter<DefaultSchemaRaw>, Response<DefaultSchemaRaw>>,
)
fn update_security( op: &mut Operation<Parameter<DefaultSchemaRaw>, Response<DefaultSchemaRaw>>, )
§fn update_security_definitions(map: &mut BTreeMap<String, SecurityScheme>)
fn update_security_definitions(map: &mut BTreeMap<String, SecurityScheme>)
Auto Trait Implementations§
impl Freeze for HttpRequest
impl !RefUnwindSafe for HttpRequest
impl !Send for HttpRequest
impl !Sync for HttpRequest
impl Unpin for HttpRequest
impl !UnwindSafe for HttpRequest
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)