Struct rocket::response::Response [−][src]
pub struct Response<'r> { /* fields omitted */ }
Expand description
Implementations
Creates a new, empty Response
without a status, body, or headers.
Because all HTTP responses must have a status, if a default Response
is written to the client without a status, the status defaults to 200 Ok
.
Example
use rocket::Response; use rocket::http::Status; let mut response = Response::new(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.headers().len(), 0); assert!(response.body().is_none());
Returns a Builder
with a base of Response::new()
.
Example
use rocket::Response; let builder = Response::build();
Returns a Builder
with a base of other
.
Example
use rocket::Response; let other = Response::new(); let builder = Response::build_from(other);
Returns the status of self
.
Example
use rocket::Response; use rocket::http::Status; let mut response = Response::new(); assert_eq!(response.status(), Status::Ok); response.set_status(Status::NotFound); assert_eq!(response.status(), Status::NotFound);
Sets the status of self
to status
.
Example
use rocket::Response; use rocket::http::Status; let mut response = Response::new(); response.set_status(Status::ImATeapot); assert_eq!(response.status(), Status::ImATeapot);
Returns the Content-Type header of self
. If the header is not present
or is malformed, returns None
.
Example
use rocket::Response; use rocket::http::ContentType; let mut response = Response::new(); response.set_header(ContentType::HTML); assert_eq!(response.content_type(), Some(ContentType::HTML));
Returns an iterator over the cookies in self
as identified by the
Set-Cookie
header. Malformed cookies are skipped.
Example
use rocket::Response; use rocket::http::Cookie; let mut response = Response::new(); response.set_header(Cookie::new("hello", "world!")); let cookies: Vec<_> = response.cookies().collect(); assert_eq!(cookies, vec![Cookie::new("hello", "world!")]);
Returns a HeaderMap
of all of the headers in self
.
Example
use rocket::Response; use rocket::http::Header; let mut response = Response::new(); response.adjoin_raw_header("X-Custom", "1"); response.adjoin_raw_header("X-Custom", "2"); let mut custom_headers = response.headers().iter(); assert_eq!(custom_headers.next(), Some(Header::new("X-Custom", "1"))); assert_eq!(custom_headers.next(), Some(Header::new("X-Custom", "2"))); assert_eq!(custom_headers.next(), None);
Sets the header header
in self
. Any existing headers with the name
header.name
will be lost, and only header
will remain. The type of
header
can be any type that implements Into<Header>
. This includes
Header
itself, ContentType
and
hyper::header
types.
Example
use rocket::Response; use rocket::http::ContentType; let mut response = Response::new(); response.set_header(ContentType::HTML); assert_eq!(response.headers().iter().next(), Some(ContentType::HTML.into())); assert_eq!(response.headers().len(), 1); response.set_header(ContentType::JSON); assert_eq!(response.headers().iter().next(), Some(ContentType::JSON.into())); assert_eq!(response.headers().len(), 1);
Sets the custom header with name name
and value value
in self
. Any
existing headers with the same name
will be lost, and the new custom
header will remain. This method should be used sparingly; prefer to use
set_header instead.
Example
use rocket::Response; use rocket::http::Header; let mut response = Response::new(); response.set_raw_header("X-Custom", "1"); assert_eq!(response.headers().get_one("X-Custom"), Some("1")); assert_eq!(response.headers().len(), 1); response.set_raw_header("X-Custom", "2"); assert_eq!(response.headers().get_one("X-Custom"), Some("2")); assert_eq!(response.headers().len(), 1);
Adds the header header
to self
. If self
contains headers with the
name header.name
, another header with the same name and value
header.value
is added. The type of header
can be any type that
implements Into<Header>
. This includes Header
itself,
ContentType
and hyper::header
types.
Example
use rocket::Response; use rocket::http::Header; use rocket::http::hyper::header::ACCEPT; let mut response = Response::new(); response.adjoin_header(Header::new(ACCEPT.as_str(), "application/json")); response.adjoin_header(Header::new(ACCEPT.as_str(), "text/plain")); let mut accept_headers = response.headers().iter(); assert_eq!(accept_headers.next(), Some(Header::new(ACCEPT.as_str(), "application/json"))); assert_eq!(accept_headers.next(), Some(Header::new(ACCEPT.as_str(), "text/plain"))); assert_eq!(accept_headers.next(), None);
Adds a custom header with name name
and value value
to self
. If
self
already contains headers with the name name
, another header
with the same name
and value
is added. The type of header
can be
any type implements Into<Header>
. This includes Header
itself,
ContentType
and hyper::header
types.
Example
use rocket::Response; use rocket::http::Header; let mut response = Response::new(); response.adjoin_raw_header("X-Custom", "one"); response.adjoin_raw_header("X-Custom", "two"); let mut custom_headers = response.headers().iter(); assert_eq!(custom_headers.next(), Some(Header::new("X-Custom", "one"))); assert_eq!(custom_headers.next(), Some(Header::new("X-Custom", "two"))); assert_eq!(custom_headers.next(), None);
Removes all headers with the name name
.
Example
use rocket::Response; let mut response = Response::new(); response.adjoin_raw_header("X-Custom", "one"); response.adjoin_raw_header("X-Custom", "two"); response.adjoin_raw_header("X-Other", "hi"); assert_eq!(response.headers().len(), 3); response.remove_header("X-Custom"); assert_eq!(response.headers().len(), 1);
Returns an immutable borrow of the body of self
, if there is one.
Example
use std::io::Cursor; use rocket::Response; let mut response = Response::new(); assert!(response.body().is_none()); let string = "Hello, world!"; response.set_sized_body(string.len(), Cursor::new(string)); assert!(response.body().is_some());
Returns a mutable borrow of the body of self
, if there is one. A
mutable borrow allows for reading the body.
Example
use std::io::Cursor; use rocket::Response; let mut response = Response::new(); assert!(response.body().is_none()); let string = "Hello, world!"; response.set_sized_body(string.len(), Cursor::new(string)); let string = response.body_mut().to_string().await; assert_eq!(string.unwrap(), "Hello, world!");
Sets the body of self
to be the fixed-sized body
with size
size
, which may be None
. If size
is None
, the body’s size will
be computing with calls to seek
just before being written out in a
response.
Example
use std::io; use rocket::Response; let string = "Hello, world!"; let mut response = Response::new(); response.set_sized_body(string.len(), io::Cursor::new(string)); assert_eq!(response.body_mut().to_string().await?, "Hello, world!");
Sets the body of self
to body
, which will be streamed.
The max chunk size is configured via Response::set_max_chunk_size()
and defaults to Body::DEFAULT_MAX_CHUNK
.
Example
use tokio::io::{repeat, AsyncReadExt}; use rocket::Response; let mut response = Response::new(); response.set_streamed_body(repeat(97).take(5)); assert_eq!(response.body_mut().to_string().await?, "aaaaa");
Sets the body’s maximum chunk size to size
bytes.
The default max chunk size is Body::DEFAULT_MAX_CHUNK
. The max chunk
size is a property of the body and is thus reset whenever a body is set
via Response::set_streamed_body()
, Response::set_sized_body()
,
or the corresponding builer methods.
This setting does not typically need to be changed. Configuring a high value can result in high memory usage. Similarly, configuring a low value can result in excessive network writes. When unsure, leave the value unchanged.
Example
use tokio::io::{repeat, AsyncReadExt}; use rocket::Response; let mut response = Response::new(); response.set_streamed_body(repeat(97).take(5)); response.set_max_chunk_size(3072);
Replaces this response’s status and body with that of other
, if they
exist in other
. Any headers that exist in other
replace the ones in
self
. Any in self
that aren’t in other
remain in self
.
Example
use rocket::Response; use rocket::http::{Status, ContentType}; let base = Response::build() .status(Status::NotFound) .header(ContentType::HTML) .raw_header("X-Custom", "value 1") .finalize(); let response = Response::build() .status(Status::ImATeapot) .raw_header("X-Custom", "value 2") .raw_header_adjoin("X-Custom", "value 3") .merge(base) .finalize(); assert_eq!(response.status(), Status::NotFound); let ctype: Vec<_> = response.headers().get("Content-Type").collect(); assert_eq!(ctype, vec![ContentType::HTML.to_string()]); let custom_values: Vec<_> = response.headers().get("X-Custom").collect(); assert_eq!(custom_values, vec!["value 1"]);
Sets self
’s status and body to that of other
if they are not already
set in self
. Any headers present in both other
and self
are
adjoined.
Example
use rocket::Response; use rocket::http::{Status, ContentType}; let other = Response::build() .status(Status::NotFound) .header(ContentType::HTML) .raw_header("X-Custom", "value 1") .finalize(); let response = Response::build() .status(Status::ImATeapot) .raw_header("X-Custom", "value 2") .raw_header_adjoin("X-Custom", "value 3") .join(other) .finalize(); assert_eq!(response.status(), Status::ImATeapot); let ctype: Vec<_> = response.headers().get("Content-Type").collect(); assert_eq!(ctype, vec![ContentType::HTML.to_string()]); let custom_values: Vec<_> = response.headers().get("X-Custom").collect(); assert_eq!(custom_values, vec!["value 2", "value 3", "value 1"]);
Trait Implementations
Auto Trait Implementations
impl<'r> !RefUnwindSafe for Response<'r>
impl<'r> !UnwindSafe for Response<'r>