ConstruĆ§Ć£o de uma API destinada Ć encurtamento de URLs
CĆ³digo JSĀ»
Vamos ser francos: passar uma URL gigante de um meme, vĆdeo ou qualquer outra coisa na internet para um(a) amigo(a) Ć© uma situaĆ§Ć£o embaraƧosa.
Tudo piora quando a pessoa que recebe o link nĆ£o tem como abri-lo diretamente e Ć© obrigada a escrever o link caractere por caractere.
Para evitar este tipo de situaĆ§Ć£o e de quebra conseguir monitorar os acessos a este link, surgiram os encurtadores de URL. Esse projeto, portanto, tem a finalidade de receber URLs complexas e retornar uma encurtada para melhor uso.
git clone https://github.com/picinelli/projeto-shortly.git
npm install
npm start
-
POST /sign-up
Esta nĆ£o Ć© uma rota autenticada.
Deve receber um corpo (body) no formato:{ name: "Fulano", email: "Fulano@Fulano.com.br", password: "Fulano", confirmPassword: "Fulano" }
-
POST /sign-in
Esta nĆ£o Ć© uma rota autenticada.
Deve receber um corpo (body) no formato:{ email: "Fulano@Fulano.com.br", password: "Fulano" }
-
POST /urls/shorten
Esta Ć© uma rota autenticada.
Deve receber um corpo (body) no formato:{ "url": "http(s)://fulano.com.br" }
Deve responder um corpo (body) no formato:
{ "shortUrl": "a8745bcf" }
-
GET /urls/:id
Esta nĆ£o Ć© uma rota autenticada.
Deve responder um corpo (body) no formato:{ "shortUrl": "a8745bcf" }
-
GET /urls/open/:shortUrl
Esta nĆ£o Ć© uma rota autenticada.
Esta rota deve redirecionar o usuƔrio para a URL original. -
DELETE /urls/:id
Esta Ć© uma rota autenticada.
Esta rota deve excluir a URL encurtada, caso seja do usuƔrio. -
GET /users/:id
Esta Ć© uma rota autenticada.
Deve responder um corpo (body) no formato:{ "id": id do usuƔrio, "name": nome do usuƔrio, "visitCount": soma da quantidade de visitas de todos os links do usuƔrio, "shortenedUrls": [ { "id": 1, "shortUrl": "...", "url": "...", "visitCount": soma da quantidade de visitas do link }, {...} ] }
-
GET /ranking
Esta nĆ£o Ć© uma rota autenticada.
Deve responder um corpo (body) no formato:
[
{
"id": id do usuƔrio,
"name": nome do usuƔrio,
"linksCount": 5,
"visitCount": 100000
},
{
"id": id do usuƔrio,
"name": nome do usuƔrio,
"linksCount": 3,
"visitCount": 85453
},
{...} //max of 10
]