.NET/ASP.NET Core
-
[ASP.NET Core] AddSingleton(), AddScoped(), AddTransient() 차이점 - 2.NET/ASP.NET Core 2023. 3. 15. 21:47
해당 포스트 작성하기 약 2년 전, ASP.NET Core 에서 3가지 생명주기에 대해 정리한 적이 있었다. [ASP.NET Core] AddSingleton(), AddScoped(), AddTransient() 차이점 - 1 :: 또치의 삽질 보관함 (tistory.com) [ASP.NET Core] AddSingleton(), AddScoped(), AddTransient() 차이점 - 1 ASP.NET Core에서 의존성 주입에 의해 추가되는 Service는 크게 3가지 생명주기를 지닌다. AddSingleton AddScoped AddTransient AddSingleton의 경우는 클라이언트(보통 웹브라우저)의 접속상태에 관계없이, 웹 서 ddochea.tistory.com 지난시간에 Scop..
-
[ASP.NET Core] WebApi with Swagger - 5. enum.NET/ASP.NET Core 2023. 2. 18. 13:26
아래와 같은 Controller 소스가 있다. using Microsoft.AspNetCore.Mvc; namespace swagger_5_enum.Controllers; [ApiController] [Route("[controller]")] public class WeatherForecastController : ControllerBase { private static readonly string[] Summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" }; private readonly ILogger _logger; public WeatherF..
-
[ASP.NET Core] WebApi with Swagger - 4. DataAnnotations을 통한 유효성 검사(Vaildation) 응답.NET/ASP.NET Core 2023. 2. 16. 23:13
System.ComponentModel.DataAnnotations 네임스페이스에 속한 특성(Attribute)를 통해 요청값에 대한 유효성 처리를 적용할 수 있다. /// /// 입력된 일수만큼 날씨 데이터를 제공합니다. /// /// 입력일수 /// [HttpGet("{cnt}", Name = "GetWeatherForecastByCount")] public IEnumerable Get( [Required][Range(1, 10)] int cnt) { // 이제 cnt 값은 1~10 사이의 값이 필수적으로 들어와야 한다. return Enumerable.Range(1, cnt).Select(index => new WeatherForecast { Date = DateTime.Now.AddDays(ind..
-
[ASP.NET Core] WebApi with Swagger - 3. 응답 명세(ProducesResponseType).NET/ASP.NET Core 2023. 2. 15. 23:27
항상 올바른 요청(Request)에 올바른 응답(Response)값만 줄 수 있는 상황이라면 좋겠지만, 요청이 거지같거나(?) 올바른 요청이지만 이를 제대로 제공할 데이터가 없는 경우가 종종 있다. ProducesResponseType는 이와 같이 응답상태에 따라 타입을 지정하여 안내할 수 있는 방법을 제공한다. 아래 소스코드는 데이터가 없을 땐 string 형식으로, 데이터가 있을땐 WeatherForecast 배열형식으로 이원화하여 응답할 수 있음을 안내하는 예제이다. /// /// 오늘 ~ 입력한 날짜 하루전에 해당하는 날씨 데이터를 제공합니다. /// /// 입력날짜 /// [HttpGet("datetime", Name = "GetWeatherForecastByDateTime")] [Produce..
-
[ASP.NET Core] WebApi with Swagger - 2. 예제(example) 적용.NET/ASP.NET Core 2023. 2. 14. 22:40
Swagger 문서내 요청에서 파라메터에 어떤 값이 들어가야하는지, 또는 어떤 값이 나올지 주석을 이용해 제한적으로나마 예제(example)을 적용할 수 있다. 1. 숫자 /// /// 입력된 일수만큼 날씨 데이터를 제공합니다. /// /// 입력일수 // 숫자형 예제 /// [HttpGet("{cnt}", Name = "GetWeatherForecastByCount")] public IEnumerable Get(int cnt) { return Enumerable.Range(1, cnt).Select(index => new WeatherForecast { Date = DateTime.Now.AddDays(index), TemperatureC = Random.Shared.Next(-20, 55), Summ..
-
[ASP.NET Core] WebApi with Swagger - 1. API 설명 추가하기 - 3.NET/ASP.NET Core 2023. 2. 12. 23:25
만약 DTO 클래스가 별도 프로젝트로 분리되어 있을 경우, 해당 프로젝트도 document 에 설명이 반영될 수 있도록 설정해줘야 한다. DTO가 추가된 프로젝트에도 설정을 true로 추가한 뒤, Program.cs 를 아래와 같이 변경한다. foreach (var file in Directory.GetFiles(AppContext.BaseDirectory, "*.xml", SearchOption.TopDirectoryOnly)) { setup.IncludeXmlComments(file, true); var doc = XDocument.Load(file); } 첫번째 장과 마찬가지로, 위 코드는 xml 출력위치를 별도로 수정하지 않았다는 전제하에 작성한 코드이다. xml 출력위치를 특정위치로 수정했다면 ..
-
[ASP.NET Core] WebApi with Swagger - 1. API 설명 추가하기 - 2.NET/ASP.NET Core 2023. 2. 12. 23:10
주석을 통한 Swagger 문서화는 해당 데이터를 주고받는 DTO 모델에도 적용 가능하다. WeatherForecast DTO모델 클래스에 아래와 같이 주석을 달아준다. /// /// 날짜입니다. /// /// /// 2021-08-01T00:00:00 public DateTime Date { get; set; } /// /// 섭씨온도입니다. /// /// /// 42 public int TemperatureC { get; set; } /// /// 화씨온도입니다. /// /// /// 107 public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); /// /// 날씨 내용입니다. /// /// /// Freezing public string? Su..
-
[ASP.NET Core] WebApi with Swagger - 1. API 설명 추가하기 - 1.NET/ASP.NET Core 2023. 2. 12. 22:29
WebApi 프로젝트를 생성하면 기본적으로 Swagger 관련 라이브러리가 Injection 되어있다. 해당 라이브러리를 통해 Swagger 문서를 생성할 수 있는데, 그냥 기본 설정값만 쓴다면 Swagger를 제대로 이용할 수 없다. 이번 단계를 통해 Swagger를 한층 더 "고오급스럽게" 사용하여 클라이언트쪽 개발자들에게 보다 쉬운 소스 설명과 더 나아가 소스 자동화 기능을 통해 덜 일하고, 더 받아가는(?) 즐거운 개발생활을 즐길 수 있길 바란다. swagger_1_comments 란 이름의 ASPNET Core WebApi 프로젝트 생성 후 아래와 같이 수행하자. 1. GenerateDocumentationFile 옵션 추가 프로젝트파일(.csproj)에 옵션을 true로 추가한다. 해당 옵션을..