Resumo
Vibe Coding em evolução
Esta é a décima quarta aula da série Vibe Coding do canal Computação Crítica, onde Victor Osório continua evoluindo sua aplicação de gestão de tickets com foco em boas práticas de desenvolvimento backend. Diferentemente das tentativas anteriores que resultaram em falhas controladas e lições valiosas, este episódio apresenta uma abordagem mais madura, explorando como estruturar uma API REST funcional utilizando Java, Quarkus e as melhores práticas da indústria. O vídeo serve como referência prática para desenvolvedores que desejam compreender como construir sistemas backend profissionais, desde a camada da API até os testes automatizados que garantem a qualidade do código.
Estrutura da API REST e camadas
O desenvolvimento da aplicação segue a organização clássica de uma API REST moderna, onde a camada de API é responsável por receber requisições HTTP, validar dados de entrada e retornar respostas apropriadas ao cliente. Victor demonstra como implementar essa camada utilizando o framework Quarkus, que oferece abstrações poderosas para criar APIs rápidas e eficientes. A discussão vai além de simplesmente expor endpoints, abordando como estruturar o código de forma que cada camada tenha responsabilidades bem definidas. O instrutor questiona a necessidade de prefixos como VO (Value Object), DAO (Data Access Object) e DTO (Data Transfer Object), abrindo espaço para uma reflexão sobre nomenclatura e clareza de código, tópico relevante para quem deseja escrever aplicações mais legíveis e manuteníveis.
Tratamento robusto de erros
Um dos pontos críticos de qualquer aplicação em produção é como lidar com erros e exceções. O vídeo enfatiza a importância de não vazar stack traces para o cliente, uma prática de segurança fundamental que protege informações sensíveis sobre a arquitetura interna do sistema. Victor mostra técnicas práticas para capturar erros, registrá-los adequadamente no servidor e retornar mensagens de erro genéricas e úteis ao cliente. Esse balance entre informatividade para o desenvolvedor e proteção para o usuário final é um aspecto muitas vezes negligenciado em projetos iniciantes, mas essencial para aplicações que irão para produção.
Autenticação com JWT
A autenticação é implementada utilizando JSON Web Tokens (JWT), um padrão amplamente adotado para comunicação segura entre cliente e servidor. O vídeo explora como gerar, validar e usar JWTs dentro de uma aplicação Quarkus, permitindo que a API diferencie entre usuários autenticados e não autenticados. A escolha por JWT oferece vantagens como stateless authentication, o que facilita o escalamento horizontal de aplicações. Victor demonstra a integração dessa camada de autenticação com o restante da aplicação, mostrando como proteger endpoints sensíveis e garantir que apenas usuários autenticados possam acessar recursos específicos.
Testes automatizados como validação
Em vez de realizar validações manuais ou confiar apenas em validações tradicionais de dados de entrada, o vídeo propõe uma abordagem onde os testes automatizados funcionam como uma camada de validação contínua. Ao desenvolver testes que cobrem o comportamento esperado da API, cada requisição é implicitamente validada por esses testes. Essa estratégia incentiva o desenvolvimento orientado por testes (TDD) e garante que qualquer regressão seja rapidamente detectada. O instrutor demonstra como estruturar testes que validam não apenas o código de lógica de negócio, mas também o comportamento da API, incluindo códigos de status HTTP e estrutura das respostas.
OpenAPI para documentação automática
Ao invés de manter documentação manualmente sincronizada com o código, o vídeo mostra como usar OpenAPI (anteriormente conhecido como Swagger) para gerar documentação automaticamente. O Quarkus facilita essa integração, permitindo que os desenvolvedores documentem suas APIs com mínimo esforço. Essa abordagem garante que a documentação esteja sempre sincronizada com a implementação real dos endpoints, reduzindo divergências e facilitando o entendimento da API por outros desenvolvedores ou consumidores externos.
Persistência com JPA puro
Na evolução do projeto, Victor descarta o Panache, uma abstração que simplifica o acesso a dados, em favor de JPA puro (Java Persistence API). Essa escolha reflete uma preferência por mais controle e explicitação sobre como os dados são acessados e persistidos no banco de dados. JPA oferece um mapeamento objeto-relacional poderoso, permitindo que os desenvolvedores trabalhem com entidades Java que são mapeadas diretamente para tabelas no banco de dados. A discussão sobre essa decisão oferece insights valiosos sobre trade-offs entre simplicidade e controle, um tema recorrente em arquitetura de software.
Integração prática no Morpho Board
Todas essas técnicas e conceitos são implementados no projeto real chamado Morpho Board, disponível no GitHub com a tag específica usada neste vídeo. O projeto serve como exemplo prático e funcional de como essas práticas se combinam em uma aplicação real. Ao examinar o código-fonte do repositório, os espectadores podem ver como cada conceito discutido se manifestá em código real, facilitando o aprendizado através de exemplos tangíveis e prontos para referência.
Continuidade da série e contexto
Este é o décimo quarto episódio de uma série extensa que começou com implementações iniciais do sistema de gestão de mudanças. Ao longo dos episódios anteriores, foram exploradas diferentes abordagens, falhas e aprendizados, culminando neste ponto onde a aplicação atinge um nível de maturidade maior. Essa progressão natural oferece aos espectadores uma visão realista de como projetos evoluem e como desenvolvedores aprendem através da experimentação e correção de curso.
O que você vai aprender
- Implementar uma camada de API REST usando Quarkus
- Integrar autenticação JWT em aplicações Java
- Estruturar tratamento robusto de erros sem vazar informações sensíveis
- Utilizar JPA puro para persistência de dados
- Escrever testes automatizados que validam comportamento da API
- Gerar documentação automática com OpenAPI
Conceitos abordados
Tecnologias utilizadas
Capítulos 8 marcações
Próximo vídeo sugerido
Avaliações
Ainda não há avaliações. Seja o primeiro a avaliar esta aula.