Polo: Ilhéus
Instrutora: Karine Prado
Trilha: Back-end com Python
Exercícios – Módulo Web Service
Com base no cenário abaixo, resposta a Questão 1:
Autenticação, Token e Autorização (Controle de Acesso às Notas)
Uma API de uma escola armazena notas dos alunos, que são consideradas informações
sensíveis. Por esse motivo, o sistema utiliza autenticação por token e autorização por perfil de
usuário para controlar o acesso aos dados.
Considere o seguinte cenário:
• O sistema possui dois tipos de usuários:
o Professor, responsável por visualizar todas as notas
o Aluno, que não possui permissão para acessar as notas por este endpoint
• As notas representam uma lista de valores numéricos (por exemplo: [7.5, 8.0, 6.0])
• Após realizar o login, o usuário recebe um token, que deve ser enviado para acessar
recursos protegidos
Regras do sistema:
• Usuário "professor" com senha "123"
• Usuário "aluno" com senha "abc"
• O token deve conter a identificação do usuário
• Apenas o usuário "professor" pode acessar as notas
• Usuários autenticados, mas sem permissão, devem receber acesso negado
Questão 1:
Desenvolva um programa em Python que:
1. Crie uma função login(usuario, senha) que:
o Verifique as credenciais do usuário
o Retorne um token contendo o nome do usuário, caso o login seja válido
o Retorne None caso o login seja inválido
2. Crie uma função acessar_notas(token) que:
o Verifique se o token é válido
o Identifique o usuário a partir do token
o Retorne a lista de notas [7.5, 8.0, 6.0] somente se o usuário for "professor"
o Caso contrário, retorne uma mensagem de acesso não autorizado
3. Realize os testes:
o Login como "professor" e tente acessar as notas
o Login como "aluno" e tente acessar as notas
4. Exiba no console o resultado de cada tentativa de acesso.
Com base no cenário abaixo, resposta a Questão 2:
Tratamento de Erros e Logs em WebServices
Uma API de uma biblioteca foi criada para consultar informações sobre livros cadastrados. Como
se trata de um sistema real, é necessário tratar erros corretamente e registrar logs para facilitar
o monitoramento da aplicação.
A API deve seguir boas práticas de desenvolvimento, retornando respostas padronizadas em
JSON e registrando logs de informação e erro conforme o comportamento do sistema.
Cenário:
• A API possui uma rota responsável por buscar livros pelo ID
• Os livros cadastrados são:
o 1 → "Dom Casmurro"
o 2 → "O Pequeno Príncipe"
o 3 → "Capitães da Areia"
Regras do sistema:
• Sempre que a rota for acessada, deve ser registrado um log de nível INFO, informando
o ID do livro solicitado
• Se o livro não existir, a API deve:
o Retornar uma resposta JSON no formato
{ "erro": "Livro não encontrado" }
o Retornar o código HTTP 404
o Registrar um log de nível ERROR
• Se o livro existir, a API deve:
o Retornar o nome do livro em formato JSON
o Retornar o código HTTP 200
Questão 2:
Desenvolva uma API em Python utilizando Flask que:
1. Configure o módulo logging para registrar mensagens de nível INFO e ERROR.
2. Crie uma rota /livro/<int:id> responsável por buscar um livro pelo seu identificador.
3. Registre um log de informação (INFO) sempre que a rota for acessada, indicando o ID
solicitado.
4. Verifique se o livro existe no dicionário de livros cadastrados.
5. Caso o livro não exista:
o Retorne uma resposta JSON padronizada informando o erro
o Retorne o código HTTP 404
o Registre um log de erro (ERROR)
6. Caso o livro exista:
o Retorne o nome do livro em formato JSON
Exemplos de teste:
• /livro/1 → Retorna o livro e gera log INFO
• /livro/99 → Retorna erro 404 em JSON e gera log ERROR
Com base no cenário abaixo, resposta a Questão 3:
Comunicação em Tempo Real com WebSocket
Sistemas que exigem comunicação em tempo real, como chats e notificações, utilizam
WebSockets para permitir a troca de mensagens contínua entre cliente e servidor, sem a
necessidade de recarregar a página a cada interação.
Neste exercício, será implementado um canal de comunicação simples utilizando WebSocket,
simulando o envio e o recebimento de mensagens em tempo real.
Cenário:
Um cliente (navegador) deve se conectar a um servidor WebSocket e enviar uma mensagem por
meio de um evento chamado "mensagem". Ao receber essa mensagem, o servidor deve
processá-la e enviar uma resposta de confirmação ao cliente.
Regras do sistema:
• A comunicação deve ocorrer utilizando WebSocket
• O cliente deve enviar uma mensagem ao servidor através do evento "mensagem"
• O servidor deve:
o Receber a mensagem enviada pelo cliente
o Exibir a mensagem recebida no terminal
o Enviar uma resposta confirmando o recebimento
• O cliente deve:
o Receber a resposta do servidor
o Exibir a resposta imediatamente na tela, sem recarregar a página
Questão 3:
Desenvolva uma aplicação simples utilizando WebSocket que:
1. Estabeleça uma conexão entre cliente e servidor.
2. Permita que o cliente envie uma mensagem ao servidor utilizando o evento
"mensagem".
3. Faça com que o servidor receba essa mensagem e a imprima no terminal.
4. Programe o servidor para enviar uma mensagem de confirmação após receber o evento.
5. Faça com que o cliente receba a resposta do servidor e a exiba em tempo real na
interface, sem necessidade de atualização da página.