Module saphir::controller
source · Expand description
Controllers are responsible for handling requests and returning responses to the client.
More specifically a Controller defines a list of endpoint (Handlers) that
handle a request and return a Future of a
Responder
. The Responder is responsible for
the Response
being generated.
To create a controller, simply implement the Controller trait on a struct:
use saphir::prelude::*;
struct BasicController;
impl Controller for BasicController {
const BASE_PATH: &'static str = "/basic";
fn handlers(&self) -> Vec<ControllerEndpoint<Self>>
where
Self: Sized {
EndpointsBuilder::new()
.add(Method::GET, "/healthz", BasicController::healthz)
.build()
}
}
impl BasicController {
async fn healthz(&self, req: Request<Body>) -> impl Responder {200}
}
Structs
Builder to simplify returning a list of endpoints in the
handlers
method
of the controller traitTraits
Trait that defines how a controller handles its requests
Trait that defines a handler within a controller.
This trait is not meant to be implemented manually as there is a blanket
implementation for Async Fns
Type Definitions
Type definition to represent a endpoint within a controller