Escritor (Writer)
El Writer
es usado para escribir contenido en la Response
:
#[async_trait]
pub trait Writer {
async fn write(mut self, req: &mut Request, depot: &mut Depot, res: &mut Response);
}
Comparado con Handler
:
#[async_trait]
pub trait Handler: Send + Sync + 'static {
async fn handle(&self, req: &mut Request, depot: &mut Depot, res: &mut Response, ctrl: &mut FlowCtrl);
}
Sus diferencias son:
- Diferentes usos,
Writer
representa una escritura específica de contenido enResponse
, que se implementa mediante contenido específico, como cadenas, mensajes de error, entre otros. ElHandler
es usado para procesar la solicitud completamente. Writer
es creado enHandler
, se consumirá cuando la funciónwrite
sea llamada, es una llamada única. YHandler
es común para todas las solicitudes;Writer
puede ser usado como contenido deResult
retornado porHandler
;- El parámetro
FlowCtrl
no existe en elWriter
, y no controla la ejecución del flujo de la solicitud entera.
El Scribe
implementa Writer
, pero con menos funcionalidad que Writer
:
pub trait Scribe {
fn render(self, res: &mut Response);
}
Las funciones Scribe
's' simplemente escriben datos en Response
, éste proceso no puede obtener información del Request
o Depot
.