Gere um redirecionamento de URL breve e temporário para compartilhamento eficiente de links. Esse processo envolve criar um link conciso que redireciona para uma URL específica, mas permanece válido por um período limitado. Ao acessar a URL curta dentro desse intervalo de tempo, os usuários são direcionados para a URL original, oferecendo uma solução rápida e temporária para compartilhar conteúdo.
A API oferece os seguintes endpoints:
GET /all: Obtém todas as URLs.
GET /{slug}: Efetua o redirect para uma página válida através da URL encurtada.
POST /makeUrlShort: Encurta a URL e retorna o objeto armazenado no Database.
A pasta /src
contém a solução URLShortener
e os projetos que compõem a aplicação.
Projeto principal que contém a API e os controladores.
Projeto que contém as entidades de domínio da aplicação.
Projeto responsável pela camada de infraestrutura, incluindo o contexto do banco de dados e repositórios.
Projeto que implementa a lógica de aplicação e serviços.
Projeto que contém os modelos de visualização utilizados pelos controladores.
Projeto que contém as exceções customizadas lançadas pela aplicação.
Projeto que contém os testes unitários em xUnity da lógica de negócio da aplicação.
dotnet test --collect:"XPlat Code Coverage"
reportgenerator "-reports:.\**\coverage.cobertura.xml" -reporttypes:Html -targetdir:output
dotnet-stryker
O domínio da url curta gerada, o mínimo e máximo de minutos para expirar são parâmetros customizáveis no appsettings.json
:
"AppSettings": {
"ShortenedUrlDomain": "http://localhost:5500",
"MinMinutesToExpire": "20",
"MaxMinutesToExpire": "50"
},
Foi implementada uma Política de Cors que só autoriza o acesso a recursos da API através da rota localhost:5000
: para visualização, é possível obter todos os produtos, vendas, reembolsos e devoluções, além de realizar o filtro por nome de produto.
Obs.: Garanta que as configurações do servidor que rode o FrontEnd de testes (ex.: Live Server), ignore os arquivos de log gerados para impedir que a página seja recarregada após uma requisição POST com sucesso.
Por exemplo, no Live Server, os settings.json podem ignorar totalmente a pasta do BackEnd (/src
) no settings.json
:
{
(...)
"liveServer.settings.ignoreFiles": [
(...)
"src/**"
]
}
Através do Middlewares/LoggingMiddleware
é realizado o logging sempre no começo e no final de uma requisição, com detalhes sobre o status e eventuais erros de forma personalizada, que são capturados no Filtro Customizado de Exceção Global (Filters/ExceptionFilter.cs
).
O projeto utiliza o SQLite como banco de dados, e as configurações podem ser encontradas no arquivo appsettings.json
do projeto URLShortener.WebAPI
. Certifique-se de ajustar as configurações conforme necessário.
{
"ConnectionStrings": {
"URLShortenerSqlite": "Data Source=UrlShortenerDB.db"
},
}
- Clone e abra a solução no Visual Studio.
- Configure o projeto
URLShortener.Infra
como o projeto de inicialização noPackage Manager Console
. - Certifique-se de que as migrações do banco de dados foram realizadas pelo Entity Framework. Se não, execute os seguintes comandos:
Add-Migration CreateDatabaseInitial
Update-Database
- Execute o projeto.
A API está documentada usando Swagger. Após a execução do projeto, acesse a documentação em:
http://localhost:5500/swagger/v1/swagger.json
Aceitamos contribuições! Se encontrar um bug ou tiver uma solicitação de recurso, por favor, abra uma issue.