참고
이 문서의 최신 버전은 아닙니다. 현재 릴리스는 이 문서의 .NET 10 버전을 참조하세요.
ASP.NET Core는 HTTP API를 빌드하기 위한 두 가지 방법인 최소 API 및 컨트롤러 기반 API를 제공합니다. 새 프로젝트의 경우 최소 코드 및 구성으로 API를 빌드하기 위한 간소화된 고성능 접근 방식을 제공하므로 최소 API를 사용하는 것이 좋습니다.
최소 API - 새 프로젝트에 권장됨
최소 API는 ASP.NET Core를 사용하여 빠른 HTTP API를 빌드하는 데 권장되는 방법입니다. 이를 통해 최소한의 코드와 구성으로 완벽하게 작동하는 REST 엔드포인트를 빌드할 수 있습니다. 기존 스캐폴딩을 건너뛰고 API 경로 및 작업을 유창하게 선언하여 불필요한 컨트롤러를 방지합니다.
다음은 웹앱의 루트에 API를 만드는 간단한 예제입니다.
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.Run();
대부분의 API는 경로의 일부로 매개 변수를 허용합니다.
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/users/{userId}/books/{bookId}",
(int userId, int bookId) => $"The user id is {userId} and book id is {bookId}");
app.Run();
최소 API는 여러 API로 확장하고, 복잡한 경로를 처리하고, 권한 부여 규칙을 적용하고, API 응답의 콘텐츠를 제어하는 데 필요한 구성 및 사용자 지정을 지원합니다.
최소 API 시작
- 자습서: 자습서: ASP.NET Core를 사용하여 최소 API 만들기
- 빠른 참조: 최소 API 빠른 참조
- 예제: 코드 예제를 사용하는 일반적인 시나리오의 전체 목록은 최소 API 빠른 참조를 참조하세요.
컨트롤러 기반 API - 대체 방법
ASP.NET Core는 컨트롤러에서 파생 ControllerBase되는 클래스인 컨트롤러 기반 접근 방식도 지원합니다. 이 방법은 기존의 개체 지향 패턴을 따르며 다음을 위해 선호될 수 있습니다.
- 복잡한 비즈니스 논리를 사용하는 대규모 애플리케이션
- MVC 패턴에 익숙한 팀
- 특정 MVC 기능이 필요한 애플리케이션
컨트롤러를 기반으로 하는 API에 대한 샘플 코드는 다음과 같습니다.
namespace APIWithControllers;
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
app.UseHttpsRedirection();
app.MapControllers();
app.Run();
}
}
using Microsoft.AspNetCore.Mvc;
namespace APIWithControllers.Controllers;
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
다음 코드는 권장되는 최소 API 접근 방식을 사용하여 동일한 기능을 제공합니다.
namespace MinimalAPI;
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.UseHttpsRedirection();
var summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
app.MapGet("/weatherforecast", (HttpContext httpContext) =>
{
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = summaries[Random.Shared.Next(summaries.Length)]
})
.ToArray();
return forecast;
});
app.Run();
}
}
두 API 프로젝트는 다음 클래스를 참조합니다.
namespace APIWithControllers;
public class WeatherForecast
{
public DateOnly Date { get; set; }
public int TemperatureC { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
public string? Summary { get; set; }
}
방법 중에서 선택
새 프로젝트에 대한 최소 API로 시작합니다. 다음을 제공합니다.
- 더 간단한 구문 - 상용구 코드 감소
- 성능 향상 - 컨트롤러에 비해 오버헤드 감소
- 더 쉬운 테스트 - 간소화된 단위 및 통합 테스트
- 최신 접근 방식 - 최신 .NET 기능 활용
필요한 경우 컨트롤러 기반 API를 고려합니다.
- 모델 바인딩 확장성(IModelBinderProvider, IModelBinder)
- 고급 유효성 검사 기능(IModelValidator)
- 애플리케이션 파트 또는 애플리케이션 모델
- JsonPatch 지원
- OData 지원
이러한 기능의 대부분은 사용자 지정 솔루션을 사용하여 최소 API에서 구현할 수 있지만 컨트롤러는 기본 제공 기능을 제공합니다.
참조
- 자습서: ASP.NET Core를 사용하여 최소 API 만들기 - 최소 API 자습서
- 최소 API 빠른 참조 - 최소 API 빠른 참조
- ASP.NET Core를 사용하여 웹 API 만들기 - 컨트롤러 기반 API 개요
- 자습서: ASP.NET Core를 사용하여 컨트롤러 기반 웹 API 만들기 - 컨트롤러 기반 API 자습서
ASP.NET Core는 HTTP API를 빌드하기 위한 두 가지 방법인 최소 API 및 컨트롤러 기반 API를 제공합니다. 새 프로젝트의 경우 최소 코드 및 구성으로 API를 빌드하기 위한 간소화된 고성능 접근 방식을 제공하므로 최소 API를 사용하는 것이 좋습니다.
최소 API - 새 프로젝트에 권장됨
최소 API는 ASP.NET Core를 사용하여 빠른 HTTP API를 빌드하는 데 권장되는 방법입니다. 이를 통해 최소한의 코드와 구성으로 완벽하게 작동하는 REST 엔드포인트를 빌드할 수 있습니다.
다음은 간단한 예제입니다.
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello World!");
app.Run();
최소 API 시작
- 자습서: 자습서: ASP.NET Core를 사용하여 최소 API 만들기
- 빠른 참조: 최소 API 빠른 참조
컨트롤러 기반 API - 대체 방법
컨트롤러는 .에서 ControllerBase파생되는 클래스입니다. 이 방법은 기존의 개체 지향 패턴을 따릅니다.
컨트롤러를 기반으로 하는 API에 대한 샘플 코드는 다음과 같습니다.
namespace APIWithControllers;
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
var app = builder.Build();
app.UseHttpsRedirection();
app.MapControllers();
app.Run();
}
}
using Microsoft.AspNetCore.Mvc;
namespace APIWithControllers.Controllers;
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
다음 코드는 권장되는 최소 API 접근 방식을 사용하여 동일한 기능을 제공합니다.
namespace MinimalAPI;
public class Program
{
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.UseHttpsRedirection();
var summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
app.MapGet("/weatherforecast", (HttpContext httpContext) =>
{
var forecast = Enumerable.Range(1, 5).Select(index =>
new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = summaries[Random.Shared.Next(summaries.Length)]
})
.ToArray();
return forecast;
});
app.Run();
}
}
두 API 프로젝트는 다음 클래스를 참조합니다.
namespace APIWithControllers;
public class WeatherForecast
{
public DateOnly Date { get; set; }
public int TemperatureC { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
public string? Summary { get; set; }
}
방법 중에서 선택
새 프로젝트에 대한 최소 API로 시작합니다. 필요한 경우 컨트롤러 기반 API를 고려합니다.
- 모델 바인딩 확장성(IModelBinderProvider, IModelBinder)
- 양식 바인딩 지원(포함) IFormFile
- 고급 유효성 검사 기능(IModelValidator)
- 애플리케이션 파트 또는 애플리케이션 모델
- JsonPatch 지원
- OData 지원
참조
- 자습서: ASP.NET Core를 사용하여 최소 API 만들기 - 최소 API 자습서
- 최소 API 빠른 참조 - 최소 API 빠른 참조
- ASP.NET Core를 사용하여 웹 API 만들기 - 컨트롤러 기반 API 개요
- 자습서: ASP.NET Core를 사용하여 컨트롤러 기반 웹 API 만들기 - 컨트롤러 기반 API 자습서
ASP.NET Core