Actix-web para Rust: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é Actix-web e para que serve?

\n\n

Actix-web é um framework web poderoso, pragmático e extremamente rápido para a linguagem de programação Rust. Ele é construído com base no modelo de atores (biblioteca Actix) e no runtime assíncrono Tokio. O Actix-web permite criar aplicações web e APIs de alto desempenho, capazes de processar milhões de requisições por segundo.

\n\n

Por que usar Actix-web?

\n
    \n
  • Desempenho: O Actix-web está consistentemente entre os três frameworks web mais rápidos do mundo (de acordo com os testes TechEmpower), superando soluções como Go net/http e Node.js Express.
  • \n
  • Segurança: O Rust garante segurança de memória em tempo de compilação, eliminando classes inteiras de vulnerabilidades (estouro de buffer, condições de corrida).
  • \n
  • Segurança de tipos: Graças ao sistema de tipos rigoroso do Rust, muitos erros (por exemplo, formato JSON inválido) são detectados em tempo de compilação.
  • \n
  • Assincronicidade: Suporte completo a async/await permite processar milhares de conexões simultâneas sem criar uma thread para cada uma.
  • \n
  • Ecossistema: O Actix-web integra-se facilmente com outras crates do Rust: serde (serialização), sqlx/diesel (bancos de dados), reqwest (cliente HTTP).
  • \n
\n\n

O Actix-web é ideal para: APIs REST, microsserviços, servidores WebSocket, aplicações web de alta carga, servidores proxy.

\n\n

Instalação do Actix-web

\n\n

Como o Actix-web é uma biblioteca para Rust, a instalação é feita através do gerenciador de pacotes cargo (análogo ao pip para Python).

\n\n

Passo 1. Certifique-se de que o Rust está instalado. Verifique com o comando:

\n
rustc --version\ncargo --version
\n

Se o Rust não estiver instalado, baixe-o em rustup.rs.

\n\n

Passo 2. Crie um novo projeto:

\n
cargo new my_actix_app\ncd my_actix_app
\n\n

Passo 3. Adicione o Actix-web às dependências. Abra o arquivo Cargo.toml e adicione:

\n
[dependencies]\nactix-web = "4"
\n\n

Passo 4. Instale as dependências e compile o projeto:

\n
cargo build
\n\n

Pronto! Agora você pode usar o Actix-web no seu projeto.

\n\n

Início rápido: "Hello, World!" no Actix-web

\n\n

Vamos criar um servidor web simples que responde a requisições GET.

\n\n

Exemplo 1: Servidor mínimo

\n
// main.rs\nuse actix_web::{get, App, HttpResponse, HttpServer, Responder};\n\n#[get("/")]\nasync fn hello() -> impl Responder {\n    HttpResponse::Ok().body("Hello, World!")\n}\n\n#[actix_web::main]\nasync fn main() -> std::io::Result<()> {\n    HttpServer::new(|| {\n        App::new()\n            .service(hello)\n    })\n    .bind(("127.0.0.1", 8080))?\n    .run()\n    .await\n}
\n\n

Execução: cargo run

\n

Verificação: Abra o navegador no endereço http://127.0.0.1:8080 ou execute:

\n
curl http://127.0.0.1:8080
\n

Você verá a resposta: Hello, World!

\n\n

Principais métodos e funções do Actix-web

\n\n

Vamos analisar os elementos-chave do framework. Para cada um, são fornecidos descrição, parâmetros e um exemplo funcional.

\n\n

1. #[get("/path")] — macro para processar requisições GET

\n

O que faz: Decora uma função assíncrona, transformando-a em um manipulador de requisições HTTP GET para o caminho especificado.

\n

Parâmetros: Caminho (string), pode conter segmentos dinâmicos (por exemplo, /{id}).

\n

Exemplo:

\n
use actix_web::{get, HttpResponse, Responder};\n\n#[get("/user/{id}")]\nasync fn get_user(path: actix_web::web::Path<String>) -> impl Responder {\n    let user_id = path.into_inner();\n    HttpRespons                    

Recommendations