Macro iron_middlefiddle::middlefiddle [] [src]

macro_rules! middlefiddle {
    (
        router => $router:expr,
        routes => {
            $(
                $route_id:ident: $route_method:ident $route:expr => $route_handler:expr
            ),+
            $(,)*
        },
        middleware => {
            $(
                $middleware_type:expr => $middleware_handler:expr
            ),*
            $(,)*
        }
        $(,)*
    ) => { ... };
}

The main iron_middlefiddle macro.

middlefiddle! {
    // Pass the router you want the routes to be added to to `router`:
    router => some_router,

    // `routes` takes one or more routes. Each one of them will have every
    // piece of middleware in `middleware` applied to them:
    routes => {
        // An example route that follows the formatting
        // `route_id: method "/an/example/path" => controller`:
        lorem: get "/lorem" => controllers::lorem::index,

        // There can be as many of these as you like…
    },

    // `middleware` takes all of the middlewares you want to apply to each
    // of the routes specified above.
    middleware => {
        // An example `BeforeMiddleware`:
        Middleware::BeforeMiddleware => middleware::SomeBeforeMiddleware,

        // An example `AfterMiddleware`:
        Middleware::AfterMiddleware => middleware::SomeAfterMiddleware,

        // There can be as many of these as you like…
    },
};

Notes

  • The formatting of the contents of routes => { ... } intentionally matches that of the router crate's own router macro in an effort to make any potential refactoring easier.

  • $route_method supports the following methods (must be lowercase):

    • get
    • post
    • put
    • delete
    • head
    • patch
    • options
    • any