**ASP.NET Core 6+ (미니멀 API 호스팅 모델)**의 표준 Web API 프로젝트 템플릿입니다. 이는 Program.cs 파일의 내용으로, 애플리케이션의 서비스 등록, 미들웨어 구성, 앱 실행을 담당합니다. .NET 6부터 Startup.cs를 대체한 간소화된 구조예요. 아래에서 단계별로 분석하겠습니다. (코드가 C#이니, 주석과 함께 설명)
1. 앱 빌더 생성 및 서비스 등록 (Services Configuration)
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
- WebApplication.CreateBuilder(args):
- args (string 배열): 명령줄 인수 (예: --environment=Development).
- 앱 빌더 객체를 생성하며, 기본 설정(로깅, 구성, 호스팅 등)을 자동으로 추가. (호스트 환경, appsettings.json 로드 등)
- builder.Services.AddControllers():
- 컨트롤러 기반 MVC/Web API를 활성화. [ApiController] 속성으로 API 엔드포인트(예: [HttpGet])를 처리할 수 있게 함.
- 의존성 주입(DI) 컨테이너에 컨트롤러 서비스 등록.
- builder.Services.AddEndpointsApiExplorer():
- 엔드포인트(액션 메서드) 메타데이터를 수집. Swagger/OpenAPI 문서화의 기반.
- builder.Services.AddSwaggerGen():
- Swashbuckle 패키지로 OpenAPI(Swagger) 문서 생성 지원. API 엔드포인트의 스키마, 파라미터 등을 자동 문서화.
- 주석: Swagger 설정 가이드 링크 제공.
목적: DI 컨테이너에 필요한 서비스를 등록. 이 단계에서 앱의 "뇌" 부분(로직 지원)을 준비.
2. 앱 빌드 및 HTTP 파이프라인 구성 (Middleware Pipeline)
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI();
}
app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
- var app = builder.Build():
- 빌더를 기반으로 WebApplication 인스턴스 생성. 이 시점에서 서비스가 고정되고, HTTP 요청 파이프라인(미들웨어 체인)이 준비됨.
- if (app.Environment.IsDevelopment()):
- 환경 변수(예: ASPNETCORE_ENVIRONMENT=Development)에 따라 조건부 실행.
- app.UseSwagger(): Swagger JSON 엔드포인트(/swagger/v1/swagger.json) 활성화.
- app.UseSwaggerUI(): 브라우저 기반 Swagger UI(/swagger) 제공. 개발 중 API 테스트에 편리.
- app.UseHttpsRedirection():
- HTTP 요청을 HTTPS로 자동 리디렉션. 보안 강화 (프로덕션 추천).
- app.UseAuthorization():
- 인증/인가 미들웨어. [Authorize] 속성으로 보호된 엔드포인트 처리 (JWT 등과 연동).
- app.MapControllers():
- 컨트롤러의 액션 메서드를 HTTP 엔드포인트로 매핑. 예: [HttpGet("api/[controller]")] → GET /api/controller 호출.
목적: HTTP 요청이 들어올 때 처리 순서(파이프라인)를 정의. 요청은 위 미들웨어를 순서대로 거침 (Swagger → HTTPS → 인증 → 컨트롤러).
3. 앱 실행
app.Run();
- 앱을 시작하고, Kestrel 서버(기본 웹 서버)로 HTTP 리스닝. (포트: 기본 5000/5001)
- 블로킹 호출: 여기서 프로그램이 종료되지 않음. Ctrl+C로 중지.
전체 흐름 요약
| 단계 | 주요 작업 | 역할 |
| 빌더 생성 | CreateBuilder + Services.Add... | 서비스/DI 등록 (백엔드 로직 준비) |
| 앱 빌드 | Build() | 파이프라인 초기화 |
| 파이프라인 구성 | UseSwagger/UI + UseHttps... + MapControllers | 요청 처리 체인 정의 (프론트엔드 흐름) |
| 실행 | Run() | 서버 시작 및 리스닝 |
추가 팁
- 환경별 동작: 개발 시 Swagger가 활성화되어 API 테스트 쉬움. 프로덕션(Production)에서는 Swagger 비활성화 추천 (보안 이유).
- 확장: 실제 프로젝트에서 로깅(builder.Logging.Add...), CORS(builder.Services.AddCors()), 데이터베이스(AddDbContext) 등을 추가.
- 버전: .NET 8+에서 최적화됨. 새 프로젝트 생성 시 dotnet new webapi로 이 템플릿 자동 생성.
- 문제 해결: 오류 시 dotnet run으로 실행하며 로그 확인.
반응형
'IT관련' 카테고리의 다른 글
| Windows Server 2022 Core에서 App Compatibility 없이 실행 가능한 .exe 기반 명령어 리스트 (0) | 2025.11.03 |
|---|---|
| Windows Admin Center (WAC)로 VirtualBox 내 Windows Server 2025 제어 설정 가이드 (0) | 2025.11.03 |
| Windows 서버에서 REST API 개발 추천 (0) | 2025.10.28 |
| ASP.NET에서 Razor v3란? (0) | 2025.10.28 |
| Kestrel 웹 서버란? (0) | 2025.10.28 |