¿Qué es Axum y para qué sirve?
\nAxum 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".
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.
\nAxum 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
Instalación de Axum
\nDado 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:
[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"\nDespués de esto, ejecute el comando cargo build para descargar y compilar las dependencias.
Inicio rápido: primera aplicación con Axum
\nCree un archivo src/main.rs y escriba un servidor HTTP muy simple:
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} \nInicie el servidor con el comando cargo run y abra el navegador en http://localhost:3000/hello/Mundo.
Métodos y funciones principales de Axum
\n\n1. Router::new()
\nDescripción: Crea un nuevo enrutador vacío. Este es el punto de entrada principal para la configuración de su aplicación.
\nParámetros: Ninguno.
\nEjemplo:
\nuse axum::Router;\n\nlet app: Router = Router::new();\n\n2. Router::route()
\nDescripción: Agrega una ruta a la ruta especificada con el método HTTP y el manejador dados.
\nParámetros:
\n- \n
path: &str— la ruta (puede contener segmentos dinámicos, por ejemplo/users/:id) \nmethod_router: MethodRouter— el resultado de llamar aget(),post(),put(),delete(), etc. \n
Ejemplo:
\nuse 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\n3. routing::get(), post(), put(), delete()
\nDescripción: Crean un manejador para el método HTTP correspondiente.
\nParámetros:
\n- \n
También en la biblioteca
Internacionalización (i18n) en Node.js: i18next y polyglot
Multer para JavaScript (Node.js): guía completa con ejemplos
Trabajo con Apache Kafka en Java: guía completa para desarrolladores
Aprendizaje automático en Rust: revisión de bibliotecas para Data Science
Trabajo con Excel en Go (Golang): bibliotecas Excelize, xlsx, tealeg
Recommendations