Introdução
Rust é uma linguagem de programação que vem ganhando cada vez mais destaque no desenvolvimento de software, especialmente na criação de aplicações web robustas e seguras. Neste artigo, vamos explorar duas das bibliotecas mais populares do ecossistema Rust: Rocket e Actix. Vamos abordar desde a configuração do ambiente até a criação de uma aplicação web completa, cobrindo as melhores práticas de gerenciamento de dependências utilizando o Cargo, o gerenciador de pacotes do Rust. Ideal para desenvolvedores que desejam se aprofundar na criação de aplicações performáticas e escaláveis, este guia prático mostrará um ciclo de desenvolvimento completo, incluindo a construção de rotas, handling de requisições e a implementação de testes unitários.
Etapas
Instalação do Rust e Configuração do Ambiente
Certifique-se de que o Rust e o Cargo estão instalados em sua máquina. Você pode baixar o instalador do Rust diretamente do site oficial. Após a instalação, verifique usando os comandos `rustc –version` e `cargo –version`.
commands# Instalar Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Verificar versões instaladas
rustc --version
cargo --versionCriação de um Novo Projeto com Cargo
Utilize o Cargo para criar um novo projeto Rust. Navegue até o diretório desejado e execute o comando para criar um novo projeto chamado ‘minha_aplicacao_web’.
commands# Criar novo projeto
cargo new minha_aplicacao_web
# Navegar para o diretório do projeto
cd minha_aplicacao_webAdicionar Dependências no arquivo Cargo.toml
Abra o arquivo `Cargo.toml` e adicione as dependências Rocket e Actix. As versões podem ser atualizadas, então é aconselhável verificar as versões mais recentes no site oficial.
Cargo.toml[dependencies] rocket = "0.4" actix-web = "4.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0"
Criação de um Servidor Web Simples com Rocket
Implemente um servidor básico utilizando Rocket. Crie um novo arquivo `main.rs` dentro do diretório `src` com um exemplo de um endpoint simples que retorna ‘Hello, World!’.
main.rs#[macro_use] extern crate rocket; #[get("/")] fn index() -> &'static str { "Hello, World!" } #[launch] fn rocket() -> _ { rocket::build().mount("/", routes![index]) }
Executando a Aplicação com Rocket
Compile e execute a aplicação utilizando Cargo. Execute o comando abaixo e acesse o servidor no navegador na URL http://localhost:8000.
commands# Compilar e executar a aplicação
cargo runCriação de um Servidor com Actix
Implemente um servidor básico utilizando Actix. Crie um novo arquivo `actix_main.rs` dentro do diretório `src` com um endpoint simples que retorna ‘Hello from Actix!’.
actix_main.rsuse actix_web::{web, App, HttpServer}; #[actix_web::main] async fn main() -> std::io::Result<()> { HttpServer::new(|| { App::new() .route("/", web::get().to(|| async { "Hello from Actix!" })) }) .bind("127.0.0.1:8080")? .run() .await }
Executando a Aplicação com Actix
Compile e execute a aplicação Actix utilizando Cargo. Execute o comando abaixo e acesse o servidor no navegador na URL http://localhost:8080.
commands# Compilar e executar a aplicação
cargo run --bin actix_appImplementação de Testes Unitários
Crie testes unitários para os seus endpoints. Na mesma estrutura do seu projeto, crie um arquivo `tests.rs` e implemente testes para as rotas que você criou anteriormente.
tests.rsuse rocket::{local::blocking::Client, http::Status}; #[test] fn test_index() { let client = Client::tracked(rocket()).expect("valid rocket"); let response = client.get("/").dispatch(); assert_eq!(response.status(), Status::Ok); assert_eq!(response.into_string().unwrap(), "Hello, World!"); }
Executando os Testes
Utilize o Cargo para rodar os testes que você implementou. Execute o comando abaixo para verificar se tudo está funcionando corretamente.
commands# Executar os testes unitários
cargo test
Conclusão
Neste tutorial, você aprendeu a utilizar o Rust para criar aplicações web simples e robustas utilizando os frameworks Rocket e Actix. Começamos pela configuração do ambiente de desenvolvimento, criação do servidor com diferentes frameworks, implementação de endpoints, e finalizamos com a introdução de testes unitários. Com essas ferramentas e práticas em sua caixa de ferramentas, você está preparado para desenvolver aplicações web complexas e eficientes no ecossistema Rust.