Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save cami-la/1be68a9da6ade1225d1c8a3aa37b7f0b to your computer and use it in GitHub Desktop.
Save cami-la/1be68a9da6ade1225d1c8a3aa37b7f0b to your computer and use it in GitHub Desktop.
Projeto Backend: API para criação do seu próprio encurtador de URL

Projeto Backend: API para criação do seu próprio encurtador de URL

Faça um programa que seja capaz encurtar URLs

Quem nunca precisou encurtar uma URL? Normalmente, recorremos a sites conhecidos, como o https://www.encurtador.com.br/ para atender a essa necessidade.

Mas agora, vamos criar juntos o nosso próprio encurtador de URLs.

Figura 1: Ilustração da requisição HTTP

Figura 2: Input de uma String e Output de um hash

Para atender à necessidade do usuário de encurtar uma URL, iremos desenvolver uma API com os seguintes endpoints:

  • createShortUrlFromOriginalUrl:
    Este é um método que trata uma solicitação POST para um endpoint que espera um parâmetro de consulta originalUrl. Ele usa a classe UrlService para salvar ou atualizar a URL original fornecida e retorna uma resposta de objeto ResponseEntity que contém um objeto Url no corpo da resposta, representando a nova URL criada com sucesso. O código de status HTTP retornado é 201 CREATED.
  • redirectToOriginalUrl:
    Este é um método que trata uma solicitação GET para um endpoint que inclui um parâmetro de caminho dinâmico ({shortUrl}). Ele usa a classe UrlService para recuperar a URL original correspondente ao URL encurtado fornecido. Em seguida, ele cria uma nova URI a partir da URL original e configura as informações do cabeçalho HTTP para especificar a localização da nova URI. A resposta é retornada como um objeto ResponseEntity, já que não há corpo de resposta associado a essa solicitação. O código de status HTTP retornado é MOVED_PERMANENTLY (301), que indica ao navegador para redirecionar o usuário para a nova localização.

Pré-requisitos

  • Conhecimento prévio acerca de POO com Java
  • IDE para desenvolvimento Java (IntelliJ IDEA Community)
  • Client API (Postman)
  • Conhecimentos básicos API Rest com Spring Boot Web
  • Noções sobre Banco de dados Relacionais (PostgreSQL)
  • Configuração de ambiente com Docker Compose
  • Noções sobre Testes Unitários (JUnit 5)
  • Noções sobre Testes de Integração (Spring Boot Test)
  • Documentação com Swagger
  • Hospedagem na alguma núvem pública Railway.app

Links Úteis


Autor


Camila Cavalcante

Feito com ❤️ por Cami-la 👋🏽 Entre em contato!

Linkedin Badge Gmail Badge

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment