ASP.NET Core Web API TIP

닷넷디벨·2023년 5월 19일
0
post-custom-banner

출처: 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 고 본론은 자신의 강좌 사이트에 있는 느낌입니다.

profile
hardcore developer
post-custom-banner

0개의 댓글