Como criar um micro serviço com API para encurtar URLs?

Podem dar um direcionamento para um iniciante, por favor? haha

Como posso fazer isso e criar um endpoint que conta os acessos às URLs geradas?

Desde já, muito obrigado à todos

Um exemplo simples de como criar um microserviço usando Java para encurtar URLs usando o framework Spring Boot:

@RestController
@RequestMapping(“/api/v1/shorten”)
public class URLShortenerController {

@Autowired
private URLShortenerService urlShortenerService;

@PostMapping
public ResponseEntity<ShortURL> shortenURL(@RequestBody String originalURL) {
    ShortURL shortURL = urlShortenerService.shortenURL(originalURL);
    return ResponseEntity.ok(shortURL);
}

@GetMapping("/{shortCode}")
public ResponseEntity<String> expandURL(@PathVariable String shortCode) {
    String originalURL = urlShortenerService.expandURL(shortCode);
    return ResponseEntity.ok(originalURL);
}

}

A classe URLShortenerController é um controlador REST que expõe duas rotas: uma para encurtar uma URL (POST /api/v1/shorten) e outra para expandir uma URL encurtada (GET /api/v1/shorten/{shortCode}). Ele usa o serviço URLShortenerService para realizar a lógica de encurtamento e expansão de URLs.

Aqui está um exemplo de uma implementação simples do serviço URLShortenerService:

@Service
public class URLShortenerService {

private Base62Encoder base62Encoder = new Base62Encoder();
private Map<String, String> urlMap = new HashMap<>();

public ShortURL shortenURL(String originalURL) {
    String shortCode = base62Encoder.encode(originalURL.hashCode());
    urlMap.put(shortCode, originalURL);
    return new ShortURL(shortCode);
}

public String expandURL(String shortCode) {
    return urlMap.get(shortCode);
}

}

O serviço URLShortenerService usa uma instância de Base62Encoder para codificar o código hash da URL original em um código curto de 62 caracteres. Ele armazena as URLs encurtadas em um mapa para que possa recuperá-las mais tarde.

Esse é apenas um exemplo simples e tem muitas coisas que devem ser levadas em consideração ao criar um microserviço de encurtamento de URLs, como garantir a unicidade dos códigos curtos, lidar com URLs inválidas e lidar com escalabilidade.

1 curtida

obrigado demais pela ajuda, vou tentar começar a implementar a partir daí, você é brabo demaiss

jonas, como eu poderia estruturar uma entidade de forma simples?

a IDE não reconhece a Base62Encoder, é necessário baixar uma dependência?

consegui fazer gerar a URL, mas está me devolvendo uma string e não um link acessível