<aside> 🍗 따라하기~
ASP.NET Core 컨트롤러를 사용하여 웹 API 만들기 - Training
</aside>
.NET 8.0 버전 다운로드
VS Code와 Extension 설치
C# Dev Kit
REST Client
using Microsoft.AspNetCore.Mvc;
namespace ContosoPizza.Controllers; // Web API 컨트롤러 및 작업 메서드 구성에 사용할 수 있는 attribute를 제공해주는 네임스페이스
[ApiController] // attribute -> 넌 이제부터 ApiController다!
[Route("[controller]")]
public class WeatherForecastController : ControllerBase // Controller아니고 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")]
// Get 메서드에 대한 attribute -> 이게 HTTP Get 요청을 IEnumerable<WeatherForecast> Get() 메서드로 라우팅해줌
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 컨트롤러 클래스 특성
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
컨트롤러의 이름이 [controller] 토큰을 바꾼다
→ 이 클래스? 컨트롤러의 이름이 WeatherForecastController 니까 저 [ ] 안이 WeatherForecastController 로 바뀐다는 뜻인거같다
이제 이 컨트롤러는 https://localhost:{port}/weatherforecast
에 대한 요청을 처리함 (컨트롤러 이름 대소문자 구분 없애고, controller 접미사 없어지는듯)
Get() 메서드 라우팅 + 메서드 내용
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
...
}
[HttpGet(Name = "GetWeatherForecast")] : 위에서 지정한 URI로 들어온 HTTP Get 요청을 아래의 Inumerable<WeatherForecast> Get() 메서드로 들어오도록 라우팅해줌
[ApiController]
어트리뷰트를 사용한 컨트롤러는 주로 하나의 액션 메서드로 하나의 HTTP 동작을 처리하게 된다
→ 각각의 액션 메서드가 특정 HTTP 메서드(GET, POST, PUT, DELETE 등)에 대응하여 동작하도록 구현되기 때문
<aside> 🙉 하나의 경로 URL에서도 Get, Post, Delete 등 다양한 종류의 요청이 있을 수 있기 때문에 컨트롤러 내부에 각각의 메서드를 만들어줘야한다
</aside>
Models 폴더 생성 → MVC 아키텍처에서 따온 이름
mkdir Models
Pizza.cs 파일 생성