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.
mongodPara ter certeza de que está rodando, execute o comando:
mongoExecute o comando:
cp .env.example .envE 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=lxgiwylA 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 installAguarde a instalação das dependências e, execute o comando:
npm run startA 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-dbEndpoint:
POST: /tokenBody:
{
"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: /connectorsBody:
{
"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=SOLIDObs: 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/:idInforme o id (uuid, não o "_id") do conector para buscar somente por ele.
Endpoint:
PUT: /connectors/:idBody:
{
"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/:idInforme 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.