#Guía de aprendizaje para Axum
1 messages · Page 1 of 1 (latest)
esta buena la idea
En resumen axum es un framework para aplicaciones web hechas en Rust, especialmente para hacer APIs Restful, el cual es compatible con Tower, que es una librería de componentes modulares para crear aplicaciones de red.
Tiene varias ventajas en comparación a otros frameworks:
- Diseño de API sin macros.
- Tiene un modelo predecible de gestión de errores.
- Propio sistema de middleware basada en Tower.
- Minimiza el código repetitivo.
Routing (enrutamiento)
Para "enrutar" creo funciones asíncronas y se asocian a un Router de axum, la función asíncrona sería de esta forma:
async fn hello_world() -> &'static str {
"Hello world!"
}```
Y para agregarlo a un `Router` quedaría de esta forma:
```rs
use axum::{Router, routing::get};
fn init_router() -> Router {
Router::new()
.route("/", get(hello_world))
}```
La verdad hasta aquí es muy intuitivo de crear los controladores.
Estructura del código
¿Qué pasa cuando el código es mayor y ya tenemos muchos controladores? Es necesario empezar a modularizar, aunque siguiendo buenas prácticas se debería hacer desde el principio
. Se hacen enrutadores para cada módulo y el integrar estos módulos se "unen" a un Router principal.
Tengo esto en un archivo user_routers.rs
use axum::{Router, routing::get};
async fn get_users() { /* ... */ }
async fn get_user() { /* ... */ }
pub fn users_router() -> Router {
Router::new()
.route("/users", get(get_users))
.route("/users/:id", get(get_user))
}
Donde users_router() contiene el Router para manejar toda la parte de usuarios.
En el código main, accedemos al archivo anterior, y se "mergea" las rutas de los usuarios que declaramos en la función users_router:
mod user_routers;
fn init_router() -> Router {
Router::new()
.route("/", get(hello_world))
.merge(user_routers::users_router())
}
Vi algo de las funciones handler, aunque aún no las llego a comprender bien, necesito checar eso aún 
Vale pues yo recien comence, me fui a el crate y quise investigar un poco acerca de que es tower y porque lo usa axum
Pero por lo que veo como es una libreria con componentes supongo que es para agilizar el proceso de desarrollo
tower es por detras lo que gestiona las coneccciones http/tcp de manera comoda
es la abstraccion de todo el desastre de red que hay por detras
viene con handshake?
revisa el source y me avisas donde esta el handshake
ya encontre el get_address
si viene
Revise un poco acerca de Routing, no recomiendo las web de OpenWebinars
Creo que todo gut con el Routing
Si, hasta aqui todo gut
Por lo que medio entendi basicamente es como handleamos la respuesta xd, osea recuerdas en el pos en los controladores que administrabamos varios errores, creo que por ahi va, solamente que aqui es para generar mas y no solo errores
Ando dandole una checada a la parte de los extractors igual para comprender
https://www.youtube.com/watch?v=-oMKT-3Fsm8
Me vi este video
Temas a investigar: