pub struct Rocket { /* fields omitted */ }
The main Rocket
type: used to mount routes and catchers and launch the
application.
Create a new Rocket
application using the configuration information in
Rocket.toml
. If the file does not exist or if there is an I/O error
reading the file, the defaults are used. See the
config documentation for more information
on defaults.
This method is typically called through the rocket::ignite
alias.
If there is an error parsing the Rocket.toml
file, this functions
prints a nice error message and then exits the process.
Creates a new Rocket
application using the supplied custom
configuration information. The Rocket.toml
file, if present, is
ignored. Any environment variables setting config parameters are
ignored. If log
is true
, logging is enabled.
This method is typically called through the rocket::custom
alias.
use rocket::config::{Config, Environment};
let config = Config::build(Environment::Staging)
.address("1.2.3.4")
.port(9234)
.finalize()?;
let app = rocket::custom(config, false);
Mounts all of the routes in the supplied vector at the given base
path. Mounting a route with path path
at path base
makes the route
available at base/path
.
The base
mount point must be a static path. That is, the mount point
must not contain dynamic path parameters: <param>
.
Use the routes!
macro to mount routes created using the code
generation facilities. Requests to the /hello/world
URI will be
dispatched to the hi
route.
#[get("/world")]
fn hi() -> &'static str {
"Hello!"
}
fn main() {
rocket::ignite().mount("/hello", routes![hi])
}
Manually create a route named hi
at path "/world"
mounted at base
"/hello"
. Requests to the /hello/world
URI will be dispatched to the
hi
route.
use rocket::{Request, Route, Data};
use rocket::handler::Outcome;
use rocket::http::Method::*;
fn hi(req: &Request, _: Data) -> Outcome<'static> {
Outcome::from(req, "Hello!")
}
rocket::ignite().mount("/hello", vec![Route::new(Get, "/world", hi)])
Registers all of the catchers in the supplied vector.
#![feature(plugin)]
#![plugin(rocket_codegen)]
extern crate rocket;
use rocket::Request;
#[catch(500)]
fn internal_error() -> &'static str {
"Whoops! Looks like we messed up."
}
#[catch(400)]
fn not_found(req: &Request) -> String {
format!("I couldn't find '{}'. Try something else?", req.uri())
}
fn main() {
rocket::ignite().catch(catchers![internal_error, not_found])
}
Add state
to the state managed by this instance of Rocket.
This method can be called any number of times as long as each call
refers to a different T
.
Managed state can be retrieved by any request handler via the
State request guard. In particular, if a
value of type T
is managed by Rocket, adding State<T>
to the list of
arguments in a request handler instructs Rocket to retrieve the managed
value.
Panics if state of type T
is already being managed.
use rocket::State;
struct MyValue(usize);
#[get("/")]
fn index(state: State<MyValue>) -> String {
format!("The stateful value is: {}", state.0)
}
fn main() {
rocket::ignite()
.mount("/", routes![index])
.manage(MyValue(10))
.launch();
}
Attaches a fairing to this instance of Rocket.
use rocket::Rocket;
use rocket::fairing::AdHoc;
fn main() {
rocket::ignite()
.attach(AdHoc::on_launch(|_| println!("Rocket is launching!")))
.launch();
}
Starts the application server and begins listening for and dispatching
requests to mounted routes and catchers. Unless there is an error, this
function does not return and blocks until program termination.
If there is a problem starting the application, a LaunchError
is
returned. Note that a value of type LaunchError
panics if dropped
without first being inspected. See the LaunchError
documentation for
more information.
rocket::ignite().launch();
Returns an iterator over all of the routes mounted on this instance of
Rocket.
use rocket::Rocket;
use rocket::fairing::AdHoc;
#[get("/hello")]
fn hello() -> &'static str {
"Hello, world!"
}
fn main() {
let rocket = rocket::ignite()
.mount("/", routes![hello])
.mount("/hi", routes![hello]);
for route in rocket.routes() {
match route.base() {
"/" => assert_eq!(route.uri.path(), "/hello"),
"/hi" => assert_eq!(route.uri.path(), "/hi/hello"),
_ => unreachable!("only /hello, /hi/hello are expected")
}
}
assert_eq!(rocket.routes().count(), 2);
}
Returns Some
of the managed state value for the type T
if it is
being managed by self
. Otherwise, returns None
.
#[derive(PartialEq, Debug)]
struct MyState(&'static str);
let rocket = rocket::ignite().manage(MyState("hello!"));
assert_eq!(rocket.state::<MyState>(), Some(&MyState("hello!")));
let client = rocket::local::Client::new(rocket).expect("valid rocket");
assert_eq!(client.rocket().state::<MyState>(), Some(&MyState("hello!")));
Returns the active configuration.
use rocket::Rocket;
use rocket::fairing::AdHoc;
fn main() {
rocket::ignite()
.attach(AdHoc::on_launch(|rocket| {
println!("Rocket launch config: {:?}", rocket.config());
}))
.launch();
}
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Immutably borrows from an owned value. Read more
🔬 This is a nightly-only experimental API. (get_type_id
)
this method will likely be replaced by an associated static
🔬 This is a nightly-only experimental API. (try_from
)
The type returned in the event of a conversion error.
🔬 This is a nightly-only experimental API. (try_from
)
Mutably borrows from an owned value. Read more
Get the TypeId
of this object.
Receives a Request
/Response
pair, and should perform some action on them. Read more
Called when a Request includes a Expect: 100-continue
header. Read more
This is run after a connection is received, on a per-connection basis (not a per-request basis, as a connection with keep-alive may handle multiple requests) Read more
This is run before a connection is closed, on a per-connection basis (not a per-request basis, as a connection with keep-alive may handle multiple requests) Read more