Modelo do encurtador em FastAPI

Gerado a partir de deploy-templates/fastapi (dado.cloud ab2f4c0).
This commit is contained in:
dado.cloud
2026-10-21 14:40:18 +00:00
parent 7006615b91
commit e0c5d12f3f
5 changed files with 251 additions and 14 deletions
+6 -2
View File
@@ -8,9 +8,10 @@ uma versão nova do seu app, sozinho.
## O que tem aqui
- `main.py`: o app FastAPI — página, API (`POST/GET /api/links`) e o redirecionamento `GET /<código>` (302).
- `main.py`: o app FastAPI — página, API (`POST/GET /api/links`), o aviso `GET /<código>` e o redirecionamento `GET /<código>/ir` (302).
- `links.py`: onde os links ficam guardados (na memória) e a validação dos endereços.
- `paginas/index.html`: a página (HTML, CSS e o JavaScript do formulário). Mude à vontade.
- `paginas/aviso.html`: a página de aviso que mostra para onde o link leva, antes de sair.
- `paginas/nao-encontrado.html`: a página de link que não existe.
- `requirements.txt`: as dependências, com versão fixa.
@@ -73,7 +74,10 @@ curl https://<endereço-do-seu-app>/api/links
# 200 {"links":[...]}
```
`GET /<código>` redireciona (302) para o link original e soma um clique. A API aceita
`GET /<código>` abre uma página de aviso com o endereço de destino e o botão "Continuar",
que leva a `GET /<código>/ir`: ali o app soma um clique e redireciona (302) para o link
original. O aviso existe porque o encurtador é público — sem ele, qualquer pessoa poderia
usar o endereço do seu app para disfarçar um link de golpe. A API aceita
chamadas de qualquer site (CORS aberto só em `/api/*`), então outro app seu pode usá-la.
Para evitar abuso, cada IP cria no máximo 30 links a cada 10 minutos.