ASP.NET Core와 단축 URL 서비스 구현
추천 자료: ASP.NET Core 인증 및 권한 부여
ASP.NET Core에서 단축 URL 기능 구현하기
기본 개념
ASP.NET Core에서 단축 URL(short-url) 기능은 사용자가 긴 URL을 입력하면 이를 짧은 버전으로 변환하고, 나중에 이 짧은 URL을 사용하여 원래 긴 URL로 리디렉션하는 기능을 포함합니다.
단계별 구현
프로젝트 설정
- ASP.NET Core Empty 프로젝트 생성
- 필요한 NuGet 패키지 설치 (예: Entity Framework Core, SQL Server)
데이터 모델 생성
- URL 데이터를 저장할 모델 생성
데이터베이스 컨텍스트 설정
- Entity Framework Core를 사용한 데이터베이스 컨텍스트 클래스 설정
URL 변환 로직 구현
- 긴 URL을 받아서 짧은 코드로 변환하는 로직 구현
컨트롤러 및 라우팅 설정
- URL 변환 및 리디렉션을 처리할 컨트롤러 생성
데이터베이스 마이그레이션 및 초기화
- Entity Framework Core의 마이그레이션 기능을 사용하여 데이터베이스 스키마 생성
프론트엔드 인터페이스 구현 (선택적)
- 사용자가 URL을 입력하고 결과를 볼 수 있는 인터페이스 구현
테스트 및 디버깅
- 시스템 테스트 및 필요한 경우 버그 수정
단순 리디렉션 코드 예제
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 기존 설정 코드 ...
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/youtube", async context =>
{
context.Response.Redirect("https://www.youtube.com/channel/[채널ID]");
});
// 기타 엔드포인트 설정...
});
// 기타 설정 코드...
}
리디렉션 유형
- 임시적 리디렉션 (302): 일시적인 변경이나 테스트에 적합
- 영구적 리디렉션 (301): URL이 영구적으로 변경되었을 때 사용, SEO에 유리
ASP.NET Core 8.0에서의 리디렉션 설정
Program.cs
에서의 리디렉션 설정 예제
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGet("/youtube", async context =>
{
context.Response.Redirect("https://www.youtube.com/channel/[채널ID]", permanent: true);
});
});
app.Run();
이 코드는 /youtube
경로로의 요청을 YouTube 채널 URL로 영구적으로 리디렉션합니다.
단축 URL 리디렉션 로직을 별도의 클래스로 분리
ShortUrlRedirector
클래스
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Routing;
using System.Threading.Tasks;
namespace MemoEngine.Routings;
public class ShortUrlRedirector
{
public void MapShortUrls(IEndpointRouteBuilder app)
{
app.MapGet("/youtube", async context =>
{
context.Response.Redirect("https://www.youtube.com/@VisualAcademy", permanent: true);
await Task.CompletedTask;
});
// 다른 단축 URL들도 이런 식으로 매핑
// 예: app.MapGet("/example", async context =>
// {
// context.Response.Redirect("https://example
.com", permanent: true);
// await Task.CompletedTask;
// });
}
}
이 클래스를 사용하여 Program.cs
파일에서 다음과 같이 라우팅을 설정할 수 있습니다:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
// 라우팅 설정
app.UseRouting();
var redirector = new ShortUrlRedirector();
redirector.MapShortUrls(app);
app.Run();
추천 자료: .NET Blazor에 대해 알아보시겠어요? .NET Blazor 알아보기를 확인해보세요!