Uma API simple de rank em nodejs, express e typescript.
A MegaRank API é uma aplicação para listar participantes de uma competição com detalhes como nome, imagem, experiência (XP) e links para redes sociais.
Para utilizar a API MegaRank, é necessário ter o Docker e o Node.js instalados na sua máquina local.
-
Docker: Acesse o site oficial do Docker para instruções de instalação e configuração do Docker em diferentes sistemas operacionais.
-
Node.js: Acesse o site oficial do Node.js para baixar e instalar o Node.js. Certifique-se de ter pelo menos a versão 20 ou qualquer lts/iron do Node.js instalada.
- Clone o repositório:
git clone [email protected]:PedroArnaldo/mega_rank_api.git && cd mega_rank_api
1 - Instalação das Dependências do Projeto:
npm install
2 - Configuração do Prisma:
npx prisma generate
3 - Configuração do Banco de Dados:
- 3.1 - Configura a string de conexção e coloque no .env
4- Configura a secreat seed para JWT:
SECRET_KEY="coloque uma seed"
5 - Inicie a aplicação:
docker compose up -d
6 - Criando a tabela no banco de dados:
npx prisma migrate dev
- Create User - Essa rota server para criar o usuário. OBS: o nome é um identificador único.
POST /users
- Request:
{
"name": "Pedro Lopes",
"password": "mypassword"
}
- Response:
{
"id": "1",
"name": "Pedro Lopes",
"password": "mypassword"
}
- Login - Essa rota server para fazer o login na aplicação, ela retorna um token de autorização. OBS: o nome é um identificador unico.
POST /users
- Request:
{
"name": "Pedro Lopes",
"password": "mypassword"
}
- Response:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE3MDMyMDE3MDUsImV4cCI6MTcwMzIwMjkwNSwic3ViIjoiZDhjZGFiNzUtOGYwYy00YTY1LTk5OWItNmEyZmIzYTI3OThjIn0.fEO3gaUMpnzzWYeTcUG6z4pu9hDxnYo5MgInucw20tw"
}
Estas rotas são responsáveis por manipular informações dos participantes e requerem autenticação na aplicação para serem acessadas.
- Lista os participantes.
GET /participants
- Response:
[
{
"id": "36b8f84d-df4e-4d49-b662-bcde71a8764f",
"name": "Gabriel de Jesus",
"imageUrl": "https://github.com/gabrieldejesus.png",
"xp": 220,
"socialNetwork": "https://www.linkedin.com/in/gabrieldejesus"
},
{
"name": "Pedro Lopes",
"imageUrl": "https://github.com/PedroArnaldo",
"xp": 320,
"socialNetwork": "https://www.linkedin.com/in/pedroarnaldoo"
}
]
- Cadastrar um novo participante - Cria um novo participante com os seguintes campos no corpo da requisição: name, imageUrl, xp, socialNetwork.
POST /participants
- Request:
{
"name": "Pedro Lopes",
"imageUrl": "https://github.com/PedroArnaldo",
"xp": 320,
"socialNetwork": "https://www.linkedin.com/in/pedroarnaldoo"
}
- Response:
{
"id": "36b8f84d-df4e-4d49-b662-bcde71a87a20",
"name": "Pedro Lopes",
"imageUrl": "https://github.com/PedroArnaldo",
"xp": 320,
"socialNetwork": "https://www.linkedin.com/in/pedroarnaldoo"
}
- Atualizar um participante existente - Atualiza as informações de um participante existente com base no id e responde com participante atualizado.
PUT /participants/:id
- Request:
{
"name": "Pedro Lopes",
"imageUrl": "https://github.com/PedroArnaldo",
"xp": 31200,
"socialNetwork": "https://www.linkedin.com/in/pedroarnaldoo"
}
- Response:
{
"id": "1223",
"name": "Pedro Lopes",
"imageUrl": "https://github.com/PedroArnaldo",
"xp": 31200,
"socialNetwork": "https://www.linkedin.com/in/pedroarnaldoo"
}
- Remover um participante - Remove um participante com base no id.
DELETE /participants/:id
1 - Implementação de testes unitários e testes Integração
2 - Implementar injeção de dependência 2.1 - Identificar as Dependências 2.2 - Criar Interfaces 2.3 - Configurar as Classes para Aceitar Dependência
- Pedro Arnaldo - Desenvolvedor - Backend - Pedro Arnaldo
Esse projeto está sob a licença (MIT) - acesse os detalhes LICENSE.md.