Pular para conteúdo

Mini-Projeto: API de Saudação Moderna 🌐

Vamos construir seu primeiro servidor web usando o Rust, focando em rotas dinâmicas e retorno de dados em JSON.

📋 Requisitos

  1. Framework: Use o actix-web.
  2. Rotas:
    • GET /: Retorna um "Bem-vindo!" em texto simples.
    • GET /saudacao/{nome}: Retorna um JSON {"mensagem": "Olá, {nome}!"}.
  3. Serialização: Use a crate serde para gerar o JSON automaticamente.

🚀 Guia de Execução

  1. Adicione as dependências:
    [dependencies]
    actix-web = "4"
    serde = { version = "1.0", features = ["derive"] }
    
  2. Implementação sugerida:
    use actix_web::{get, web, App, HttpServer, Responder, HttpResponse};
    use serde::Serialize;
    
    #[derive(Serialize)]
    struct Resposta {
        mensagem: String,
    }
    
    #[get("/")]
    async fn index() -> impl Responder {
        HttpResponse::Ok().body("Bem-vindo à API Rust!")
    }
    
    #[get("/saudacao/{nome}")]
    async fn saudar(nome: web::Path<String>) -> impl Responder {
        let resposta = Resposta {
            mensagem: format!("Olá, {}!", nome),
        };
        HttpResponse::Ok().json(resposta)
    }
    
    #[actix_web::main]
    async fn main() -> std::io::Result<()> {
        println!("Servidor rodando em http://localhost:8080");
        HttpServer::new(|| {
            App::new()
                .service(index)
                .service(saudar)
        })
        .bind("127.0.0.1:8080")?
        .run()
        .await
    }
    

✅ Critérios de Aceite

  • [ ] O servidor inicia corretamente e responde na porta 8080.
  • [ ] A rota de saudação retorna um JSON bem formatado.
  • [ ] O código utiliza async/await e o atributo #[actix_web::main].