Encurtador de URL utilizando Nest e Prisma (SQLite). Criação e Autenticação de usuario utilizando Passport.js e JWT. Documentação pode ser acessada após rodar o app
$ docker compose build
$ docker compose up$ npm install -g @nestjs/cli
$ npm install -g pnpm$ pnpm install$ pnpm prisma init --datasource-provider sqlite
$ pnpm prisma migrate dev# development
$ pnpm run start
# watch mode
$ pnpm run start:dev
# production mode
$ pnpm run start:prod# unit tests
$ pnpm run test
# e2e tests
$ pnpm run test:e2e
# test coverage
$ pnpm run test:covPara encurtart uma URL realize uma chamada POST para o endpoint /short com o seguinte payload:
{
"originUrl": "http://url.com"
}Após a chamada será retornado um novo link com a URL encurtada que poderá ser acessada a partir de agora:
{
"shortened_url": "http://localhost:3000/hrz1jt"
}Qualquer pessoa pode chamar o endpoint, porém, caso seja enviado um token no Header authorization você poderá, visualizar, editar e excluir este cadastro.
Para cadastrar um novo usuario siga Cadastro de Usuario.
Um usuario poderá ser cadastraro ao realizar uma chamada POST para o endpoint /user/register com o seguinte payload:
{
"email": "email@email.com",
"password": "123"
}Após o cadastro será necessário realizar uma autenticação para poder receber um token JWT e realizar chamadas de consulta, edição e exclusão.
Um usuario poderá ser autenticado ao realizar uma chamada POST para o endpoint /auth/login com o seguinte payload:
{
"email": "email@email.com",
"password": "123"
}Caso estiver tudo certo com os dados enviados, será retornado um JWT que deverá ser guardado para realizar as chamadas de consulta, edição e exclusão.
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJmYWNiZGU2YS1kOTlhLTQ1MGUtOTBiZS1iODcyYWVkNjE3YTQiLCJlbWFpbCI6InRhbGlzc29uMkBlbWFpbC5jb20iLCJjcmVhdGVkQXQiOiIyMDI0LTEwLTEwVDIyOjE1OjA3LjE0NFoiLCJpYXQiOjE3Mjg1OTg1MTEsImV4cCI6MTczMTE5MDUxMX0.6fhsrx6ZiY0jAZEToUEM1wmNki6WvsGOyKCHGyBoLlU"
}Para listar todas URLs validas encurtadas pelo o usuario é necessario enviar o token JWT recebido após a autenticação no Header authorization.
Para receber todas URLs validas é necessário fazer uma chamada GET para o endpoint /url/list.
Poderá ser enviado no Body as opções de paginação:
{
"page": "1",
"perPage": "2"
}Para editar o destino de URLs encurtadas pelo o usuario é necessario enviar o token JWT recebido após a autenticação no Header authorization.
Para editar o destino é necessario fazer uma chamada PATCH para o endpoint /url/update-destiny com o seguinte payload:
{
"urlId": "123abc",
"newUrlDestiny": "http://google.com"
}O campo urlId pode ser obtido após listar todas as URLs criadas pelo usuario.
Para deletar as URLs encurtadas pelo o usuario é necessario enviar o token JWT recebido após a autenticação no Header authorization.
Para deletar é necessario fazer uma chamada DELETE para o endpoint /url/delete com o seguinte payload:
{
"urlId": "123abc"
}O campo urlId pode ser obtido após listar todas as URLs criadas pelo usuario.
Nest is MIT licensed.