Struct actix_web_lab::web::Redirect
source · pub struct Redirect { /* private fields */ }
Expand description
An HTTP service for redirecting one path to another path or URL.
This feature has graduated to Actix Web. Further development will occur there.
Redirects are either relative or absolute.
By default, the “307 Temporary Redirect” status is used when responding. See this MDN article on why 307 is preferred over 302.
§Examples
use actix_web::{web, App};
use actix_web_lab::web as web_lab;
App::new()
// redirect "/duck" to DuckDuckGo
.service(web_lab::Redirect::new("/duck", "https://duckduckgo.com/"))
.service(
// redirect "/api/old" to "/api/new" using `web::redirect` helper
web::scope("/api").service(web_lab::redirect("/old", "/new")),
);
Implementations§
source§impl Redirect
impl Redirect
sourcepub fn new(
from: impl Into<Cow<'static, str>>,
to: impl Into<Cow<'static, str>>,
) -> Self
pub fn new( from: impl Into<Cow<'static, str>>, to: impl Into<Cow<'static, str>>, ) -> Self
Create a new Redirect
service, first providing the path that should be redirected.
The default “to” location is the root path (/
). It is expected that you should call either
to
or to
afterwards.
Note this function has no effect when used as a responder.
Redirect to an address or path.
Whatever argument is provided shall be used as-is when setting the redirect location. You can also use relative paths to navigate relative to the matched path.
§Examples
// redirects "/oh/hi/mark" to "/oh/bye/mark"
Redirect::new("/oh/hi/mark", "../../bye/mark");
sourcepub fn to(to: impl Into<Cow<'static, str>>) -> Self
pub fn to(to: impl Into<Cow<'static, str>>) -> Self
Shortcut for creating a redirect to use as a Responder
.
Only receives a to
argument since responders do not need to do route matching.
sourcepub fn permanent(self) -> Self
pub fn permanent(self) -> Self
Use the “308 Permanent Redirect” status when responding.
See this MDN article on why 308 is preferred over 301.
sourcepub fn temporary(self) -> Self
pub fn temporary(self) -> Self
Use the “307 Temporary Redirect” status when responding.
See this MDN article on why 307 is preferred over 302.
sourcepub fn using_status_code(self, status: StatusCode) -> Self
pub fn using_status_code(self, status: StatusCode) -> Self
Allows the use of custom status codes for less common redirect types.
In most cases, the default status (“308 Permanent Redirect”) or using the temporary
method, which uses the “307 Temporary Redirect” status have more consistent behavior than
301 and 302 codes, respectively.
// redirects would use "301 Moved Permanently" status code
Redirect::new("/old", "/new").using_status_code(StatusCode::MOVED_PERMANENTLY);
// redirects would use "302 Found" status code
Redirect::new("/old", "/new").using_status_code(StatusCode::FOUND);
Trait Implementations§
source§impl HttpServiceFactory for Redirect
impl HttpServiceFactory for Redirect
fn register(self, config: &mut AppService)
source§impl Responder for Redirect
impl Responder for Redirect
type Body = ()
source§fn respond_to(self, _req: &HttpRequest) -> HttpResponse<Self::Body>
fn respond_to(self, _req: &HttpRequest) -> HttpResponse<Self::Body>
HttpResponse
.Auto Trait Implementations§
impl Freeze for Redirect
impl RefUnwindSafe for Redirect
impl Send for Redirect
impl Sync for Redirect
impl Unpin for Redirect
impl UnwindSafe for Redirect
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
)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 more