Axum para Rust: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

¿Qué es Axum y para qué sirve?

\n

Axum es un framework web moderno, ergonómico y de alto rendimiento para el lenguaje Rust, desarrollado por el equipo de Tokio. Está construido sobre los populares crates tokio, tower y hyper, lo que garantiza un alto rendimiento y asincronía "de fábrica".

\n

El objetivo principal de Axum es proporcionar a los desarrolladores una API intuitiva para crear aplicaciones web y APIs, manteniendo al mismo tiempo todo el poder y la seguridad de Rust. A diferencia de soluciones más "de bajo nivel", Axum abstrae la complejidad de trabajar con el protocolo HTTP, permitiendo centrarse en la lógica de negocio.

\n

Axum es ideal para:

\n
    \n
  • Creación de APIs RESTful y microservicios
  • \n
  • Desarrollo de aplicaciones web con renderizado del lado del servidor
  • \n
  • Construcción de servidores proxy y middleware
  • \n
  • Implementación de conexiones WebSocket
  • \n
  • Cualquier escenario que requiera alto rendimiento y fiabilidad
  • \n
\n\n

Instalación de Axum

\n

Dado que Rust es un lenguaje compilado, la instalación se realiza a través del gestor de paquetes Cargo. Agregue las siguientes dependencias a su archivo Cargo.toml:

\n
[dependencies]\naxum = "0.7"\ntokio = { version = "1", features = ["full"] }\nserde = { version = "1", features = ["derive"] }\nserde_json = "1"\ntower-http = { version = "0.5", features = ["cors", "trace"] }\ntracing = "0.1"\ntracing-subscriber = "0.3"
\n

Después de esto, ejecute el comando cargo build para descargar y compilar las dependencias.

\n\n

Inicio rápido: primera aplicación con Axum

\n

Cree un archivo src/main.rs y escriba un servidor HTTP muy simple:

\n
use axum::{\n    routing::get,\n    Router,\n};\nuse std::net::SocketAddr;\n\n#[tokio::main]\nasync fn main() {\n    // Creamos el enrutador\n    let app = Router::new()\n        .route("/", get(root_handler))\n        .route("/hello/:name", get(hello_handler));\n\n    // Iniciamos el servidor\n    let addr = SocketAddr::from(([127, 0, 0, 1], 3000));\n    println!("Servidor iniciado en {}", addr);\n    \n    axum::Server::bind(&addr)\n        .serve(app.into_make_service())\n        .await\n        .unwrap();\n}\n\nasync fn root_handler() -> &'static str {\n    "¡Bienvenido a la página principal!"\n}\n\nasync fn hello_handler(axum::extract::Path(name): axum::extract::Path) -> String {\n    format!("¡Hola, {}!", name)\n}
\n

Inicie el servidor con el comando cargo run y abra el navegador en http://localhost:3000/hello/Mundo.

\n\n

Métodos y funciones principales de Axum

\n\n

1. Router::new()

\n

Descripción: Crea un nuevo enrutador vacío. Este es el punto de entrada principal para la configuración de su aplicación.

\n

Parámetros: Ninguno.

\n

Ejemplo:

\n
use axum::Router;\n\nlet app: Router = Router::new();
\n\n

2. Router::route()

\n

Descripción: Agrega una ruta a la ruta especificada con el método HTTP y el manejador dados.

\n

Parámetros:

\n
    \n
  • path: &str — la ruta (puede contener segmentos dinámicos, por ejemplo /users/:id)
  • \n
  • method_router: MethodRouter — el resultado de llamar a get(), post(), put(), delete(), etc.
  • \n
\n

Ejemplo:

\n
use axum::{routing::get, Router};\n\nasync fn users_list() -> &'static str { "Lista de usuarios" }\nasync fn create_user() -> &'static str { "Creación de usuario" }\n\nlet app = Router::new()\n    .route("/users", get(users_list).post(create_user));
\n\n

3. routing::get(), post(), put(), delete()

\n

Descripción: Crean un manejador para el método HTTP correspondiente.

\n

Parámetros:

\n

Recommendations