O que é Axum e para que serve?
\nAxum é um framework web moderno, ergonômico e de alto desempenho para a linguagem Rust, desenvolvido pela equipe Tokio. Ele é construído sobre os populares crates tokio, tower e hyper, garantindo alta performance e assincronicidade "prontas para uso".
O principal objetivo do Axum é fornecer aos desenvolvedores uma API intuitiva para criar aplicações web e APIs, mantendo toda a potência e segurança do Rust. Diferente de soluções mais "de baixo nível", o Axum abstrai a complexidade de trabalhar com o protocolo HTTP, permitindo focar na lógica de negócio.
\nAxum é ideal para:
\n- \n
- Criação de APIs RESTful e microsserviços \n
- Desenvolvimento de aplicações web com renderização no servidor \n
- Construção de servidores proxy e middleware \n
- Implementação de conexões WebSocket \n
- Qualquer cenário que exija alta performance e confiabilidade \n
Instalação do Axum
\nComo Rust é uma linguagem compilada, a instalação é feita através do gerenciador de pacotes Cargo. Adicione as seguintes dependências ao seu arquivo 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"\nDepois disso, execute o comando cargo build para baixar e compilar as dependências.
Início rápido: primeira aplicação com Axum
\nCrie o arquivo src/main.rs e escreva um servidor HTTP simples:
use axum::{\n routing::get,\n Router,\n};\nuse std::net::SocketAddr;\n\n#[tokio::main]\nasync fn main() {\n // Criando o roteador\n let app = Router::new()\n .route("/", get(root_handler))\n .route("/hello/:name", get(hello_handler));\n\n // Iniciando o servidor\n let addr = SocketAddr::from(([127, 0, 0, 1], 3000));\n println!("Servidor rodando em {}", 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 "Bem-vindo à página inicial!"\n}\n\nasync fn hello_handler(axum::extract::Path(name): axum::extract::Path) -> String {\n format!("Olá, {}!", name)\n} \nExecute o servidor com o comando cargo run e abra o navegador no endereço http://localhost:3000/hello/Mundo.
Principais métodos e funções do Axum
\n\n1. Router::new()
\nDescrição: Cria um novo roteador vazio. Este é o ponto de entrada principal para configurar sua aplicação.
\nParâmetros: Nenhum.
\nExemplo:
\nuse axum::Router;\n\nlet app: Router = Router::new();\n\n2. Router::route()
\nDescrição: Adiciona uma rota ao caminho especificado com o método HTTP e manipulador fornecidos.
\nParâmetros:
\n- \n
path: &str— caminho da rota (pode conter segmentos dinâmicos, ex:/users/:id) \nmethod_router: MethodRouter— resultado da chamada deget(),post(),put(),delete(), etc. \n
Exemplo:
\nuse axum::{routing::get, Router};\n\nasync fn users_list() -> &'static str { "Lista de usuários" }\nasync fn create_user() -> &'static str { "Criação de usuário" }\n\nlet app = Router::new()\n .route("/users", get(users_list).post(create_user));\n\n3. routing::get(), post(), put(), delete()
\nDescrição: Criam um manipulador para o respectivo método HTTP.
\nParâmetros:
\n- \n
Também na biblioteca
Geração de relatórios PDF em JavaScript (Node.js): bibliotecas e exemplos
Trabalho com S3 e armazenamentos em nuvem em Java: biblioteca AWS SDK
Rate Limiting em Go: guia para limitar a velocidade de requisições
frozen para C++: guia completo com exemplos práticos
Trabalhando com YAML em PHP: biblioteca Symfony Yaml e parsing de dados
Recommendations