/projeto-shortly

This project is an API to create shortened URL

Primary LanguageJavaScript


Logo

Projeto - Shortly

šŸš€ ConcluĆ­do! šŸš€

ConstruĆ§Ć£o de uma API destinada Ć  encurtamento de URLs
CĆ³digo JSĀ»

SumƔrio

IntroduĆ§Ć£o

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.

InstalaĆ§Ć£o

git clone https://github.com/picinelli/projeto-shortly.git

npm install

npm start

Rotas

  • 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
 ]

Tecnologias

Nodejs ExpressJS PostgreSQL Git Visual Studio Code

Contato

LinkedIn Mail