Pular para conteúdo

Quiz 15 - Introdução

1. **Qual o principal benefício de usar Rust para o desenvolvimento Web Backend?**
É mais fácil de aprender que JavaScript
Alta performance e segurança de memória, ideal para serviços de larga escala
Funciona apenas no navegador Chrome
Não precisa de servidor para rodar > **Explicação**: A eficiência do Rust reduz custos de infraestrutura e evita crashes fatais.
2. **Qual crate é o padrão para serialização e desserialização de dados (como JSON) no Rust?**
`json-rust`
`clap`
`serde`
`tokio` > **Explicação**: Serde (Serializer/Deserializer) é uma das crates mais importantes e rápidas do ecossistema.
3. **Para usar o Actix Web, a função `main` deve ser marcada com o atributo:**
`#[test]`
`#[web_app]`
`#[actix_web::main]`
`#[start_server]` > **Explicação**: Este atributo configura o runtime assíncrono necessário para o servidor rodar.
4. **O que significa um "Handler" no contexto de um servidor web?**
É o mouse do servidor
Uma função que processa uma requisição em uma rota específica e retorna uma resposta
O código que deleta o banco de dados
Uma variável global > **Explicação**: Handlers são as funções que definem o que acontece em cada URL da sua API.
5. **Qual a função do tipo `Responder` no Actix Web?**
Enviar um e-mail
É uma trait que permite que diferentes tipos sejam convertidos em uma resposta HTTP
É o nome do usuário Logado
Faz o parser do JSON > **Explicação**: Tipos como `String` ou `HttpResponse` implementam `Responder`.
6. **Como extraímos dados de um corpo de requisição JSON?**
Lendo o arquivo Cargo.toml
Usando o extrator `web::Json` nos argumentos do handler
Usando um loop `for` no socket
O Rust não suporta JSON > **Explicação**: Os extratores do Actix facilitam muito a captura de dados tipados.
7. **Qual a diferença entre `.service()` e `.route()` na configuração do App?**
Sò existe o `.service()`
`.service()` registra handlers com macros (ex: `#[get]`); `.route()` registra manualmente o caminho e o método
`.service()` é apenas para arquivos estáticos
Não há diferença > **Explicação**: Ambas servem para definir rotas, mas o uso de macros com `.service()` é o mais comum.
8. **A palavra-chave `async` em um handler permite que o servidor:**
Rode em modo debug
Processe múltiplas requisições simultaneamente sem bloquear a thread principal
Delete variáveis automaticamente
Use apenas 1MB de memória > **Explicação**: Rust assíncrono é a base da alta performance do Actix Web.
9. **O tipo `web::Data` é usado para:**
Guardar a data atual
Compartilhar estado (como um banco de dados) entre todos os handlers do servidor
Enviar arquivos binários
Criar novos vetores > **Explicação**: `web::Data` gerencia o estado global da aplicação de forma segura entre as threads.
10. **Qual o código de status HTTP padrão para uma resposta de sucesso (`Ok`)?**
404
500
200
301 > **Explicação**: 200 OK é o código que indica que a requisição foi bem-sucedida.