Struct rocket::local::Client

source ·
pub struct Client { /* private fields */ }
Expand description

A structure to construct requests for local dispatching.

§Usage

A Client is constructed via the new() or untracked() methods from an already constructed Rocket instance. Once a value of Client has been constructed, the LocalRequest constructor methods (get(), put(), post(), and so on) can be used to create a LocalRequest for dispatching.

See the top-level documentation for more usage information.

A Client constructed using new() propagates cookie changes made by responses to previously dispatched requests. In other words, if a previously dispatched request resulted in a response that adds a cookie, any future requests will contain that cookie. Similarly, cookies removed by a response won’t be propagated further.

This is typically the desired mode of operation for a Client as it removes the burden of manually tracking cookies. Under some circumstances, however, disabling this tracking may be desired. In these cases, use the untracked() constructor to create a Client that will not track cookies.

§Synchronization

While Client implements Sync, using it in a multithreaded environment while tracking cookies can result in surprising, non-deterministic behavior. This is because while cookie modifications are serialized, the exact ordering depends on when requests are dispatched. Specifically, when cookie tracking is enabled, all request dispatches are serialized, which in-turn serializes modifications to the internally tracked cookies.

If possible, refrain from sharing a single instance of Client across multiple threads. Instead, prefer to create a unique instance of Client per thread. If it’s not possible, ensure that either you are not depending on cookies, the ordering of their modifications, or both, or have arranged for dispatches to occur in a deterministic ordering.

§Example

The following snippet creates a Client from a Rocket instance and dispatches a local request to POST / with a body of Hello, world!.

use rocket::local::Client;

let rocket = rocket::ignite();
let client = Client::new(rocket).expect("valid rocket");
let response = client.post("/")
    .body("Hello, world!")
    .dispatch();

Implementations§

source§

impl Client

source

pub fn new(rocket: Rocket) -> Result<Client, LaunchError>

Construct a new Client from an instance of Rocket with cookie tracking.

By default, a Client propagates cookie changes made by responses to previously dispatched requests. In other words, if a previously dispatched request resulted in a response that adds a cookie, any future requests will contain the new cookies. Similarly, cookies removed by a response won’t be propagated further.

This is typically the desired mode of operation for a Client as it removes the burden of manually tracking cookies. Under some circumstances, however, disabling this tracking may be desired. The untracked() method creates a Client that will not track cookies.

§Errors

If launching the Rocket instance would fail, excepting network errors, the LaunchError is returned.

§Example
use rocket::local::Client;

let client = Client::new(rocket::ignite()).expect("valid rocket");
source

pub fn untracked(rocket: Rocket) -> Result<Client, LaunchError>

Construct a new Client from an instance of Rocket without cookie tracking.

Unlike the new() constructor, a Client returned from this method does not automatically propagate cookie changes.

§Errors

If launching the Rocket instance would fail, excepting network errors, the LaunchError is returned.

§Example
use rocket::local::Client;

let client = Client::untracked(rocket::ignite()).expect("valid rocket");
source

pub fn rocket(&self) -> &Rocket

Returns the instance of Rocket this client is creating requests for.

§Example
use rocket::local::Client;

let my_rocket = rocket::ignite();
let client = Client::new(my_rocket).expect("valid rocket");

// get the instance of `my_rocket` within `client`
let my_rocket = client.rocket();
source

pub fn get<'c, 'u: 'c, U: Into<Cow<'u, str>>>( &'c self, uri: U, ) -> LocalRequest<'c>

Create a local GET request to the URI uri.

When dispatched, the request will be served by the instance of Rocket within self. The request is not dispatched automatically. To actually dispatch the request, call LocalRequest::dispatch() on the returned request.

§Example
use rocket::local::Client;

let client = Client::new(rocket::ignite()).expect("valid rocket");
let req = client.get("/hello");
source

pub fn put<'c, 'u: 'c, U: Into<Cow<'u, str>>>( &'c self, uri: U, ) -> LocalRequest<'c>

Create a local PUT request to the URI uri.

When dispatched, the request will be served by the instance of Rocket within self. The request is not dispatched automatically. To actually dispatch the request, call LocalRequest::dispatch() on the returned request.

§Example
use rocket::local::Client;

let client = Client::new(rocket::ignite()).expect("valid rocket");
let req = client.put("/hello");
source

pub fn post<'c, 'u: 'c, U: Into<Cow<'u, str>>>( &'c self, uri: U, ) -> LocalRequest<'c>

Create a local POST request to the URI uri.

When dispatched, the request will be served by the instance of Rocket within self. The request is not dispatched automatically. To actually dispatch the request, call LocalRequest::dispatch() on the returned request.

§Example
use rocket::local::Client;
use rocket::http::ContentType;

let client = Client::new(rocket::ignite()).expect("valid rocket");

let req = client.post("/hello")
    .body("field=value&otherField=123")
    .header(ContentType::Form);
source

pub fn delete<'c, 'u: 'c, U>(&'c self, uri: U) -> LocalRequest<'c>
where U: Into<Cow<'u, str>>,

Create a local DELETE request to the URI uri.

When dispatched, the request will be served by the instance of Rocket within self. The request is not dispatched automatically. To actually dispatch the request, call LocalRequest::dispatch() on the returned request.

§Example
use rocket::local::Client;

let client = Client::new(rocket::ignite()).expect("valid rocket");
let req = client.delete("/hello");
source

pub fn options<'c, 'u: 'c, U>(&'c self, uri: U) -> LocalRequest<'c>
where U: Into<Cow<'u, str>>,

Create a local OPTIONS request to the URI uri.

When dispatched, the request will be served by the instance of Rocket within self. The request is not dispatched automatically. To actually dispatch the request, call LocalRequest::dispatch() on the returned request.

§Example
use rocket::local::Client;

let client = Client::new(rocket::ignite()).expect("valid rocket");
let req = client.options("/hello");
source

pub fn head<'c, 'u: 'c, U>(&'c self, uri: U) -> LocalRequest<'c>
where U: Into<Cow<'u, str>>,

Create a local HEAD request to the URI uri.

When dispatched, the request will be served by the instance of Rocket within self. The request is not dispatched automatically. To actually dispatch the request, call LocalRequest::dispatch() on the returned request.

§Example
use rocket::local::Client;

let client = Client::new(rocket::ignite()).expect("valid rocket");
let req = client.head("/hello");
source

pub fn patch<'c, 'u: 'c, U>(&'c self, uri: U) -> LocalRequest<'c>
where U: Into<Cow<'u, str>>,

Create a local PATCH request to the URI uri.

When dispatched, the request will be served by the instance of Rocket within self. The request is not dispatched automatically. To actually dispatch the request, call LocalRequest::dispatch() on the returned request.

§Example
use rocket::local::Client;

let client = Client::new(rocket::ignite()).expect("valid rocket");
let req = client.patch("/hello");
source

pub fn req<'c, 'u: 'c, U>(&'c self, method: Method, uri: U) -> LocalRequest<'c>
where U: Into<Cow<'u, str>>,

Create a local request with method method to the URI uri.

When dispatched, the request will be served by the instance of Rocket within self. The request is not dispatched automatically. To actually dispatch the request, call LocalRequest::dispatch() on the returned request.

§Example
use rocket::local::Client;
use rocket::http::Method;

let client = Client::new(rocket::ignite()).expect("valid rocket");
let req = client.req(Method::Get, "/hello");

Auto Trait Implementations§

§

impl !Freeze for Client

§

impl !RefUnwindSafe for Client

§

impl Send for Client

§

impl Sync for Client

§

impl Unpin for Client

§

impl !UnwindSafe for Client

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T, I> AsResult<T, I> for T
where I: Input,

source§

fn as_result(self) -> Result<T, ParseErr<I>>

source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> IntoCollection<T> for T

§

fn into_collection<A>(self) -> SmallVec<A>
where A: Array<Item = T>,

Converts self into a collection.
§

fn mapped<U, F, A>(self, f: F) -> SmallVec<A>
where F: FnMut(T) -> U, A: Array<Item = U>,

source§

impl<T> Same for T

source§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> Typeable for T
where T: Any,

source§

fn get_type(&self) -> TypeId

Get the TypeId of this object.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V