API feita para teste de vaga de desenvolvedor backend na devapi.
Tenha certeza de ter o nestjs-cli, typescript e o mongodb-server instalados.
Os comandos do mongodb são para linux (não tenho certeza se são os mesmos no windows ;-;).
Para usar esta api o mongodb deve estar rodando antes de tudo.
mongod
Para ter certeza de que está rodando, execute o comando:
mongo
Execute o comando:
cp .env.example .env
E escreva as variaveis de acordo com o exemplo abaixo:
Use uma url de um banco de dados que você tenha ou crie um novo chamado devapi-backend-test
MONGODB_URL=mongodb://localhost/devapi-backend-test
TOKEN_PK=lxgiwyl
A variavel MONGODB_URL
é referente a url que será utilizada para a conexão com o banco de dados.
A variavel TOKEN_PK
é referente a chave privada usada pelo JWT.
Rode o comando:
npm install
Aguarde a instalação das dependências e, execute o comando:
npm run start
A API estará rodando em http://localhost:1939 e o swagger estará rodando em http://localhost:1939/api
Para popular o banco de dados com dados ficticios, execute o comando após a inicialização da API:
npm run populate-db
Endpoint:
POST: /token
Body:
{
"payload": "payload"
}
Cria um bearer token válido por 7 horas, para utilização da API.
Todas as rotas de conectores precisam de um token de autorização bearer no header da requisição
Endpoint:
POST: /connectors
Body:
{
"name": "name",
"status": "status",
"description": "description",
"category": "category",
"type": "SOLID",
"baseUrl": "baseUrl",
"logoUrl": "logoUrl",
"privacy": "PRIVATE"
}
Cria um novo conector no banco de dados.
Endpoint:
GET: /connectors?filter=type&search=SOLID
Obs: Os parametros são opcionais, nesse caso acima, seriam retornados somente os conectores do tipo solid. Omitilos resulta em buscar todos os conectores.
Endpoint:
GET: /connectors/:id
Informe o id (uuid, não o "_id") do conector para buscar somente por ele.
Endpoint:
PUT: /connectors/:id
Body:
{
"name": "name",
"status": "status",
"description": "description",
"category": "category",
"type": "SOLID",
"baseUrl": "baseUrl",
"logoUrl": "logoUrl",
"privacy": "PRIVATE"
}
Para facilitar, os dados que não precisam ser editados podem ser omitidos.
Endpoint:
DELETE: /connectors/:id
Informe o id e remova o conector do banco de dados permanentemente.
Pequena nota sobre o desenvolvimento
Eu nunca tinha usado NestJS antes, fiquei muito animado em aprender para aplicar neste projeto. Não me pareceu dificil, e eu fiquei completamente apaixonado pelo framework, ainda não entendi muito bem as boas práticas do mesmo, mas acredito que posso melhorar com o tempo e uso.