#Guía de aprendizaje para Axum

1 messages · Page 1 of 1 (latest)

pine abyss
#

rustWeb Temas a investigar:

  • Introducción a Axum
  • Routing y funciones Handler
  • Estructura de la aplicación
  • Extractores
tulip dune
#

esta buena la idea

pine abyss
#

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.
pine abyss
#

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 ferrispacman . 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 ferris_sob

fast jackal
#

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

tulip dune
#

es la abstraccion de todo el desastre de red que hay por detras

fast jackal
#

viene con handshake?

tulip dune
fast jackal
#

si viene

fast jackal
#

Revise un poco acerca de Routing, no recomiendo las web de OpenWebinars

#

Creo que todo gut con el Routing

fast jackal
#

Ando dandole una checada a la parte de los extractors igual para comprender