Skip to content

Encurtador de URLs com API Gateway (Spring Cloud) construído em contêineres Docker e funções serverless na Microsoft Azure

Notifications You must be signed in to change notification settings

reidn3r/azure-api-gateway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

URL Shortener Backend

Java + Azure + Spring Cloud Gateway

Visão Geral

Este projeto é um encurtador de URLs, construído com Java e infraestrutura serverless da Azure. Ele permite criar links curtos com expiração e redirecionar usuários de forma segura e eficiente — tudo armazenado em Azure Blob Storage.


Arquitetura

Arquitetura do Sistema URL Shortener

Componente Tecnologia Tipo de Implantação
API Gateway Spring Cloud Gateway Docker (ACI via ACR)
Criação de URL Azure Function (Java) Serverless
Redirecionamento Azure Function (Java) Serverless
Armazenamento Azure Blob Storage Serverless (Blob JSON)

Endpoint do Gateway (temporariamente offline):
http://scg-encurtador.brazilsouth.azurecontainer.io


Como Usar

1️⃣ Criar uma URL Encurtada

Endpoint: POST /create

Body:

{
  "url": "https://exemplo.com  ",
  "expiresIn": 3600
}
Campo Descrição Validação
url URL de destino Não nula, não vazia, formato URL
expiresIn Tempo de vida em segundos Inteiro positivo

Resposta (201 Created):

{
  "sourceURL": "https://example.com  ",
  "destinyUrl": "WXYZ",
  "expiresDate": "2025-02-08T00:00:00.0000"
}

Exemplo de requisição POST /create


2️⃣ Redirecionar Usuário

Endpoint: GET /{destinyUrl}

Exemplo:

GET http://scg-encurtador.brazilsouth.azurecontainer.io/abc123

✅ Se válida → Redireciona para URL original (301)

❌ Se expirada → Retorna erro JSON com mensagem de erro

No navegador: Redirecionamento automático
Via client HTTP: Recebe o HTML da página de destino

Exemplo de redirecionamento


Armazenamento no Azure Blob Storage

Cada URL encurtada gera um arquivo .json no Blob Storage com a estrutura:

{
  "sourceURL": "https://example.com",
  "destinyUrl": "ABCD",
  "expiresDate": "2025-02-08T00:00:00"
}

Container padrão: url-temp-file
Nome do blob: {destinyUrl}.json


Validação de Entrada

A classe RequestDTO garante a integridade dos dados recebidos:

@Getter
@Setter
public class RequestDTO {
    @NotNull
    @NotBlank
    @URL
    private String url;

    @NotNull
    @Positive
    private int expiresIn;
}

✅ Validações automáticas via anotações Jakarta Bean Validation.


Implantação do API Gateway (Spring Cloud Gateway)

Passo a passo para publicar no Azure Container Registry (ACR)

Etapa Comando
1. Build da imagem docker build -t url-shortener-gateway .
2. Tag para ACR docker tag url-shortener-gateway:latest <NOME_ACR>.azurecr.io/url-shortener-gateway:latest
3. Push para ACR docker push <NOME_ACR>.azurecr.io/url-shortener-gateway:latest
4. Deploy no ACI az container create --resource-group <RG> --name gateway --image <NOME_ACR>.azurecr.io/url-shortener-gateway:latest --cpu 1 --memory 1 --registry-login-server <NOME_ACR>.azurecr.io --dns-name-label scg-encurtador --os-type Linux --ports 80

Substitua <NOME_ACR> e <RG> pelos valores reais do seu ambiente Azure.

About

Encurtador de URLs com API Gateway (Spring Cloud) construído em contêineres Docker e funções serverless na Microsoft Azure

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published