Esse é um projeto desenvolvido como base para a avaliação de habilidades técnicas para o papel de Desenvolvedor Backend Java da empresa Olisaúde. Para mais detalhes a respeito do desafio é recomendada a leitura do seu arquivo README.
Criar uma API simples para gerenciar Clientes.
- Criar um cliente
- Editar um cliente
- Obter um cliente específico
- Listar clientes
- nome
- data de nascimento
- sexo
- [ problemas de saude ]
- data de criação
- data de atualização
- nome
- grau do problema (de 1 a 2)
ex: diabetes, grau 2
sd = soma do grau dos problemas
score = (1 / (1 + eˆ-(-2.8 + sd ))) * 100
- Frontend (só implementaremos a API Restful)
- Autenticação
- SOLID, Clean code
- Consultas com Spring Data JPA
- Injeção de Dependências
- Tratamento de respostas de erro
- Geração automática do Swagger com a OpenAPI 3
- Testes automatizados
- Uso de DTOs para a API
As seguintes tecnologias foram utilizadas no desenvolvimento da API Rest do projeto:
- Java 17
- Spring Boot 3
- Maven
- PostgreSQL
- Hibernate
- Flyway
- Lombok
- Insomnia
- Docker
- SpringDoc OpenAPI 3
- Swagger UI
- Clonar repositório git
- Construir o projeto:
$ ./mvnw clean package
- Executar a aplicação:
$ java -jar target/todolist-0.0.1-SNAPSHOT.jar
A API poderá ser acessada em localhost:8080. O Swagger poderá ser visualizado em localhost:8080/swagger-ui/index.html
Para fazer as requisições HTTP abaixo, foi utilizada a ferramenta curl:
-
Editar um cliente
-
Obter um cliente específico
-
Listar clientes
-
Criar um cliente
$ curl -X POST -H "Content-Type: application/json" -d '{
"name": "João Anonimo",
"birthDate": "1993-02-22",
"gender": "MALE",
"healthProblem": [
{
"name": "DEPRESSION"
},
{
"name": "ASHMA"
}
]
}' http://localhost:8080/customer
- Detalhar planeta pelo ID
$ curl http://localhost:8080/planets/1
[
{
"id":1,
"name":"Tatooine",
"climate":"arid",
"terrain":"desert",
"filmCount":"5"
}
]
- https://hub.packtpub.com/why-we-need-design-patterns/
- https://refactoring.guru/
- http://br.phptherightway.com/
- https://www.php-fig.org/psr/psr-12/
- https://www.atlassian.com/continuous-delivery/software-testing/types-of-software-testing
- https://github.com/exakat/php-static-analysis-tools
- https://martinfowler.com/articles/microservices.htm
- https://docs.guzzlephp.org/en/stable/request-options.html
- https://www.devmedia.com.br/rest-tutorial/28912