Modelo do encurtador em Express

Gerado a partir de deploy-templates/express (dado.cloud ab2f4c0).
This commit is contained in:
dado.cloud
2026-10-21 14:40:17 +00:00
parent 9047c10d9a
commit 63f06ccf26
4 changed files with 155 additions and 6 deletions
+6 -2
View File
@@ -8,9 +8,10 @@ uma versão nova do seu app, sozinho.
## O que tem aqui
- `server.js`: o servidor — página, API (`POST/GET /api/links`) e o redirecionamento `GET /<código>` (302).
- `server.js`: o servidor — página, API (`POST/GET /api/links`), o aviso `GET /<código>` e o redirecionamento `GET /<código>/ir` (302).
- `links.js`: 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.
Não tem banco de dados: os links ficam na memória do app e **somem quando ele é publicado
@@ -70,7 +71,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.