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:cov
Para 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.