Esse repositório trata-se do código de uma API, cuja finalidade é servir, através de consultas feitas por um ORM num um banco de dados SQL, rotas que encaminhem para criar usuários da aplicação, encurtar novas URLs de um usuário logado, redirecionar para a URL correta através da URL encurtada criada, obter todas as URLs que já foram encurtados pelo usuário, obter um ranking de cliques em URLs, e, também, poder deletar URLs encurtadas.
- POST "/users/signup": Enviando um payload contendo email e password, cria um novo usuário.
- POST "/auth/sign-in": Enviando um payload contendo name, email e passwod, faz o login de um usuário, obtendo-se uma chave temporária.
- POST (🔑Rota Autenticada🔑) "/urls/shorten": Enviando-se uma URL por payload, encurta-se a URL, obtendo-se a url da URL encurtada.
- GET "/urls/:id": Enviando-se o id da URL através dos parâmetros da requisição, obtém-se as informações daquela URL encurtada
- GET (🔑Rota Autenticada🔑) "/urls/open/:shortUrl": Enviando-se a URL encurtada através dos parâmetros da requisição, redireciona da URL encurtada para a URL original.
- GET (🔑Rota Autenticada🔑) "/users/me": Obtém-se todas as URLs encurtadas do usuário e as informações dele
- GET "/ranking": Obtém-se um ranking ordenado em ordem decrescente de visitas para as URLs de todos os usuários cadastrados na aplicação.
- DELETE (🔑Rota Autenticada🔑) "/urls/:id": Enviando-se o id da URL que se quer excluir, exclui a URL encurtada do usuário.
Possuindo-se a chave temporária, envia-se, através dos headers da requisição, um header de name "Authentication" e key "Bearer + (chave temporária)".
A API foi desenvolvida para praticar meus aprendizados em NestJS e Prisma ORM, atualizando para um framework mais intuitivo, rápido e seguro, um projeto que eu já tinha desenvolvido em Express.js e queries de SQL puras.
- Instale as dependências:
npm i
- Crie um arquivo ".env" conforme o exemplo do arquivo ".env.example"
- Popule o banco de dados com os modelos:
npx prisma migrate dev
- Execute-o:
npm run start:dev
- Ou, opcionalmente, você pode buildá-lo:
npm run build
- E, então, acesse-o através de http://localhost:3000