Este projeto é uma API para um aplicativo de certificações, semelhante à avaliação de competências do LinkedIn. Foi desenvolvido durante a NLW Expert trilha de Java, primeira NLW (Next Level Week) de 2024, utilizando uma variedade de tecnologias.
Este projeto foi desenvolvido utilizando as seguintes tecnologias e ferramentas:
Inicie a base de dados com:
docker-compose up -d
Alimente a base de dados rodando o arquivo CreateSeed.java
Agora pode iniciar a API com:
mvn spring-boot:run
Para iniciar o projeto, siga os seguintes passos:
docker-compose up -d
mvn spring-boot:run
Para parar o docker, execute o seguinte comando:
docker-compose stop
Utilizando o Httpie para fazer requisições HTTP, é possível realizar testes e interagir com a API de forma simples e intuitiva.
Na nossa API as buscas de informações (GET) são feitas por Route Params e estão implementadas as seguintes requisições:
Para requisitar as questões e respectivas alternativas de uma tecnologia específica usamos o seguinte link:
http://localhost:8085/questions/technology/JAVA
onde JAVA
pode ser trocado por outra tecnologia desejada.
Para requiistar o ranking top 10 dos maiores pontuadores em todas as certificações usamos o seguinte link:
http://localhost:8085/ranking/top10
Na nossa API a inserção de informações (POST) são feitas por Body Params e estão implementadas as seguintes requisições:
Para verificar se um usuário possui uma certificação para uma terminada tecnologia usamos o seguinte link: http://localhost:8085/students/verifyIfHasCertification
, para fazer uma requisição POST com o body seguindo a estrutura:
{
"email": "email@email.com",
"technology": "JAVA"
}
Na techonologia devemos colcocar uma que está cadastrada no banco de dados, nesse caso "JAVA".
Para enviar as respostas das questões de uma certificação utilizmos o seguinte link: http://localhost:8085/students/certification/answer
,
para fazer uma requesição POST com o body seguindo a estrutura:
{
"email": "email@email.com",
"technology": "JAVA",
"questionsAnswers": [
{
"questionID": "c5f02721-6dc3-4fa6-b46d-6f2e8dca9c66",
"alternativeID": "bafdf631-6edf-482a-bda9-7dce1efb1890"
},
{
"questionID": "b0ec9e6b-721c-43c7-9432-4d0b6eb15b01",
"alternativeID": "f8e6e9b3-199b-4f0d-97ce-7e5bdc080da9"
},
{
"questionID": "f85e9434-1711-4e02-9f9e-7831aa5c743a",
"alternativeID": "d3e51a56-9b97-4bb8-9827-8bcf89f4b276"
}
]
}
As questões devem estar cadastradas e referenciadas pelos seus UUIDs assim com as alternativas selecionadas pelo usuário.
No arquivo Anotações.md eu fiz algumas anotações durante as aulas.