Struct thruster::App[][src]

pub struct App<T: 'static + Context + Send> {
    pub context_generator: fn(_: Request) -> T,
    // some fields omitted
}

App, the main component of Thruster. The App is the entry point for your application and handles all incomming requests. Apps are also composeable, that is, via the subapp method, you can use all of the methods and middlewares contained within an app as a subset of your app's routes.

There are three main parts to creating a thruster app:

  1. Use App.create to create a new app with a custom context generator
  2. Add routes and middleware via .get, .post, etc.
  3. Start the app with App.start

Examples

Subapp

This example is not tested
let mut app1 = App::<BasicContext>::new();

fn test_fn_1(context: BasicContext, _chain: &MiddlewareChain<BasicContext>) -> MiddlewareReturnValue<BasicContext> {
  Box::new(future::ok(BasicContext {
    body: context.params.get("id").unwrap().to_owned(),
    params: context.params,
    query_params: context.query_params
  }))
};

app1.get("/:id", vec![test_fn_1]);

let mut app2 = App::<BasicContext>::new();
app2.use_sub_app("/test", &app1);

In the above example, the route /test/some-id will return some-id in the body of the response.

Fields

Generate context is common to all Apps. It's the function that's called upon receiving a request that translates an acutal Request struct to your custom Context type. It should be noted that the context_generator should be as fast as possible as this is called with every request, including 404s.

Methods

impl<T: Context + Send> App<T>
[src]

Creates a new instance of app with the library supplied BasicContext. Useful for trivial examples, likely not a good solution for real code bases. The advantage is that the context_generator is already supplied for the developer.

Create a new app with the given context generator. The app does not begin listening until start is called.

Add method-agnostic middleware for a route. This is useful for applying headers, logging, and anything else that might not be sensitive to the HTTP method for the endpoint.

Add an app as a predetermined set of routes and middleware. Will prefix whatever string is passed in to all of the routes. This is a main feature of Thruster, as it allows projects to be extermely modular and composeable in nature.

Return the route parser for a given app

Add a route that responds to GETs to a given path

Add a route that responds to POSTs to a given path

Add a route that responds to PUTs to a given path

Add a route that responds to DELETEs to a given path

Add a route that responds to UPDATEs to a given path

Sets the middleware if no route is successfully matched.

Auto Trait Implementations

impl<T> Send for App<T>

impl<T> Sync for App<T>