Computer Engineering/ASP.NET Core

Routing

onenewkong 2024. 3. 10. 01:34
var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();
  • 앱으로 이동할 때 URL 세그먼트를 제공하지 않으면 pattern: "{controller=Home}/{action=Index}/{id?}"); 에서 지정된 "Home" 컨트롤러 및 "Home" 메서드가 기본값으로 사용됨
  • 첫번째 URL 세그먼트는 실행할 컨트롤러 클래스를 결정함
    • 따라서 localhost:5001/HelloWorld는HelloWorld Controller 클래스에 매핑됨
  • URL 세그먼트의 두번째 부분은 클래스의 작업 메서드를 결정함
    • 따라서 localhost:5001/HelloWorld/Index는 HelloWorldController 클래스의 Index 메서드가 실행되도록 함
    • localhost:5001/HelloWorld로만 이동했음에도 기본적으로 Index 메서드가 호출됨
    • Index는 메서드 이름이 명시적으로 지정되지 않은 경우 컨트롤러에서 호출되는 기본 메서드임
  • URL 세그먼트의 세번째 부분(id)은 경로 데이터임

 

// GET: /HelloWorld/Welcome/ 
public string Welcome(string name, int numTimes = 1)
{
    return HtmlEncoder.Default.Encode($"Hello {name}, NumTimes is: {numTimes}");
}
  • C#의 선택적 매개 변수 기능을 사용하여 numTimes 매개 변수에 대해 전달된 값이 없는 경우 해당 매개 변수의 기본 값이 1임을 나타냄
  • HtmlEncoder.Default.Encode를 사용하여 JavaScript 사용과 같은 악의적인 입력으로부터 앱을 보호함
  • $"Hello {name}, NumTimes is: {numTimes}"에서 보간된 문자열(String Interpolation)을 사용함

 

  • URL 세그먼트 Parameters가 사용되지 않음
  • name 및 numTimes 매개 변수는 쿼리 문자열로 전달됨
  • 위 URL에서 ?는 구분 기호이며, 다음에 쿼리 문자열이 옴
  • & 문자는 필드 - 값 쌍을 구분

 

 

# 선택적 매개 변수 기능이란?

C++의 디폴트 매개변수와 같은 기능이다.

매개 변수를 필수 또는 선택 사항으로 지정할 수 있다. 호출 시 모든 필수 매개 변수에 대한 인수를 제공해야 하지만 선택적 매개 변수에 대한 인수는 생략할 수 있다. 이때, 선택적 매개 변수에 대해서는 기본값을 필수적으로 제공해주고 있어야 하며, 필수 매개 변수 다음으로 정의해야 한다.

 

'Computer Engineering > ASP.NET Core' 카테고리의 다른 글

Middleware  (0) 2024.03.10
개요  (1) 2024.02.29