출처: https://youtu.be/s1bk-68aB1U
Asp.net core web API 는 몇가지 강력한 기능을 소개합니다.
Asp.Net Core Web API 프로젝트를 생성합니다.
Controller 사용을 체크하겠습니다.
이template 기본 동작을 하게 구성되있는데 필요없는 부분을 삭제하겠습니다.
읽기/쓰기 동작이 포함한 Controller를 UserController로 생성하겠습니다.
이제는 사실상 표준이 되버린 swagger 기능이 포함되있습니다.
실행을 하면 제공되는 swagger UI 입니다.
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
Program.cs에서 builder.Services 에서 종속성을 선언합니다.
아까 만든 UserController에서 의존성 주입을 해보겠습니다.
[Route("api/[controller]")]
[ApiController]
public class UserController : ControllerBase
{
private readonly ILogger<UserController> _logger;
public UserController(ILogger<UserController> logger)
{
_logger = logger;
}
...
생성자에 logger 의존성을 arg를 선언하고 local 변수로 주입했습니다.
/// <summary>
/// 이건 Get Method
/// </summary>
/// <returns></returns>
// GET: api/<UserController>
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
API Method에서 /// 입력하면 Summary 가 자동 삽입 되고 여기에 설명을 적으면
Swagger 에서 출력되야 하지만 그냥은 안나옵니다.
프로젝트 속성에서 API 설명서를 생성을 누르고
다시 program.cs에서
builder.Services.AddSwaggerGen(c =>
{
c.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory,
$"{Assembly.GetExecutingAssembly().GetName().Name}.xml"));
});
swagger 설명이 나옵니다.
Validat Model 추가
public class UserModel
{
[Required]
[MinLength(10,ErrorMessage ="{0}말이 짧다")]
public string FirstName { get; set; }
}
Model 을 하나 만든다음 제약조건으로 필수에 최소 글자 10자로 Attribute를 설정하겠습니다.
/// <summary>
/// 모델
/// </summary>
/// <param name="userModel">파라미터</param>
/// <returns>리턴</returns>
[HttpPost("Test2")]
public string Get2(UserModel userModel) {
return userModel.FirstName;
}
Controller 에 해당 모델을 사용하는 API를 만든다음 Swagger로 Test를 하면
Validate를 통과 못하면 이렇게 설정한 문구가 표시됩니다.
그동안 tim corey 선생님의 강좌를 clone 하면서 느낀것데 유튜뷰에 공개하는것은
Summary 고 본론은 자신의 강좌 사이트에 있는 느낌입니다.