Este projeto desenvolve uma API REST para gerenciar operações em um consultório médico, abrangendo tanto o lado do cliente quanto do servidor, e integrando ambos. Durante o desenvolvimento foram aplicadas as seguintes tecnologias e práticas.
DTO (Data Transfer Object): Utilização de DTOs para estruturar os dados transferidos entre cliente e servidor.
Integração com Banco de Dados: Implementação de conexão com banco de dados para armazenamento e recuperação de dados.
Flyway: Utilização do Flyway para controle de versão e migração de banco de dados.
Requisições HTTP (GET, PUT, DELETE, POST): Implementação de endpoints RESTful para realizar operações de leitura, atualização, exclusão e criação de recursos.
Beans: Uso de beans gerenciados pelo Spring Framework para injeção de dependências e gerenciamento de componentes.
Spring Security e JWT (Auth0): Implementação de segurança utilizando Spring Security com autenticação baseada em JWT (JSON Web Tokens) do Auth0.
Spring Doc (Swagger): Utilização do Spring Doc (integrado com Swagger) para documentação automática da API, facilitando a visualização e teste dos endpoints.
Fluxo Given/When/Then: Adoção do padrão Given/When/Then nos testes para estruturar e organizar cenários de testes automatizados.
Testes Unitários com JUnit e AssertJ: Implementação de testes unitários utilizando JUnit para escrever e executar testes, e AssertJ para fazer asserções de forma fluente.
Mockito: Utilização do Mockito para criar mocks e simular comportamentos de dependências durante os testes.
Este projeto visa demonstrar a aplicação prática dessas tecnologias e práticas no contexto de desenvolvimento de APIs RESTful para aplicações corporativas.
@RestController@RequestMapping("/pacientes")
publicclassPacienteController {
@AutowiredprivatePacienteServicepacienteService;
@GetMapping("/{id}")
publicResponseEntity<PacienteDTO> getPaciente(@PathVariableLongid) {
PacienteDTOpaciente = pacienteService.findById(id);
returnResponseEntity.ok(paciente);
}
@PostMappingpublicResponseEntity<Void> createPaciente(@RequestBodyPacienteDTOpacienteDTO) {
pacienteService.create(pacienteDTO);
returnResponseEntity.status(HttpStatus.CREATED).build();
}
@PutMapping("/{id}")
publicResponseEntity<Void> updatePaciente(@PathVariableLongid, @RequestBodyPacienteDTOpacienteDTO) {
pacienteService.update(id, pacienteDTO);
returnResponseEntity.noContent().build();
}
@DeleteMapping("/{id}")
publicResponseEntity<Void> deletePaciente(@PathVariableLongid) {
pacienteService.delete(id);
returnResponseEntity.noContent().build();
}
}
https://gerfy.tech/


