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++의 디폴트 매개변수와 같은 기능이다.
매개 변수를 필수 또는 선택 사항으로 지정할 수 있다. 호출 시 모든 필수 매개 변수에 대한 인수를 제공해야 하지만 선택적 매개 변수에 대한 인수는 생략할 수 있다. 이때, 선택적 매개 변수에 대해서는 기본값을 필수적으로 제공해주고 있어야 하며, 필수 매개 변수 다음으로 정의해야 한다.
'Old > ASP.NET Core' 카테고리의 다른 글
Middleware (0) | 2024.03.10 |
---|---|
개요 (1) | 2024.02.29 |