WebAPI는 UI를 포함하지 않고 데이터만 응답하는 구조입니다. 대표적으로 JSON 형식의 데이터를 반환합니다.
Pages 폴더 삭제Controllers 폴더 생성namespace HelloEmpty.Models
{
public class HelloMessage
{
public string Message { get; set; }
}
}
using HelloEmpty.Models;
using Microsoft.AspNetCore.Mvc;
namespace HelloEmpty.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
[HttpGet]
public List<HelloMessage> Get()
{
return new List<HelloMessage>
{
new HelloMessage { Message = "Hello Web API 1" },
new HelloMessage { Message = "Hello Web API 2" },
new HelloMessage { Message = "Hello Web API 3" }
};
}
}
}
[Route("api/[controller]")]는 자동으로api/Values라는 경로를 만들어줍니다.
[ApiController]는 WebAPI 전용 기능을 활성화합니다 (자동 Model Binding, Validation 등).
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer(); // Swagger 미사용 시에도 권장
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllers(); // WebAPI 활성화
app.Run();
이전 MVC/RazorPage 설정은 모두 주석 처리!
https://localhost:xxxx 만 입력하면 404 발생 (뷰 없음)/api/values 입력https://localhost:xxxx/api/values[
{"message":"Hello Web API 1"},
{"message":"Hello Web API 2"},
{"message":"Hello Web API 3"}
]
개발자 도구 (F12) → 네트워크 탭에서도 JSON 응답 확인 가능
| 항목 | 설명 |
|---|---|
| UI(View) | 없음 |
| 응답 형식 | JSON |
| 컨트롤러 반환 | 데이터 (List, 객체 등) |
| 주요 사용처 | 클라이언트/서버 통신 (모바일, 유니티, SPA 등) |
| 확장성 | 높음. 다양한 클라이언트와 연동 가능 |
| 분류 | View 사용 | Routing 방식 | Controller 종류 |
|---|---|---|---|
| MVC | 사용함 | MapControllerRoute | Controller |
| Razor Pages | 사용함 | MapRazorPages | PageModel |
| Web API | 사용 안함 | MapControllers | ControllerBase |