Este projeto é uma API REST simples desenvolvida com Node.js puro, sem o uso de frameworks. A API permite gerenciar links encurtados, oferecendo endpoints para criar, listar, buscar, excluir e redirecionar links.
Este projeto faz parte da postagem do meu blog:
Criei uma API estilo Bit.ly com Node.js e zero dependências
GET /links
Retorna uma lista de todos os links cadastrados.
Exemplo de resposta:
[
{
"id": "9d66dd18-0125-4677-8fd1-3a541da16e1d",
"original_url": "https://wesleydmscn.com/",
"short_code": "wesleydmscn",
"created_at": "2025-04-05T13:37:01.869Z"
}
]
GET /links/:short_code
Retorna os detalhes de um link específico.
Exemplo de resposta:
{
"id": "9d66dd18-0125-4677-8fd1-3a541da16e1d",
"original_url": "https://wesleydmscn.com/",
"short_code": "wesleydmscn",
"created_at": "2025-04-05T13:37:01.869Z"
}
GET /r/:short_code
Redireciona o usuário para a URL original associada ao short_code
.
Exemplo de resposta:
Redireciona com o status 301 Moved Permanently
.
POST /links
Cria um novo link encurtado.
Corpo da requisição:
{
"original_url": "https://linkedin.com/in/wesleydmscn",
"short_code": "linkedin-wesley"
}
Exemplo de resposta:
{
"id": "a1b2c3d4-5678-90ef-ghij-klmnopqrstuv",
"original_url": "https://linkedin.com/in/wesleydmscn",
"short_code": "linkedin-wesley",
"created_at": "2025-04-05T14:00:00.000Z"
}
Erros possíveis:
400 Bad Request
: Código curto já existe.
DELETE /links/:short_code
Exclui um link específico.
Exemplo de resposta:
Status 204 No Content
.
Erros possíveis:
400 Bad Request
: Link não encontrado.
git clone https://github.com/seu-usuario/link-shortener-api.git
cd link-shortener-api
node src/index.js
Você pode testar os endpoints utilizando o arquivo rest.http
com a extensão REST Client no Visual Studio Code.
src/
├── controllers/
│ └── link.controller.js # Lógica dos endpoints
├── helpers/
│ ├── body-parser.js # Middleware para parsear o corpo da requisição
│ └── extend-response.js # Extensões para o objeto de resposta
├── mocks/
│ └── links.js # Dados mockados para teste
├── route.js # Definição das rotas
├── index.js # Servidor principal
└── rest.http # Arquivo para testar a API
Este projeto é de código aberto e está licenciado sob os termos da MIT License.