분류 전체보기
-
[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로 추가한다. 해당 옵션을..
-
[Typescript] swagger로 httpClient code를 자동 생성해주는 도구 swagger-typescript-api 소개Javascript & TypeScript 2023. 1. 29. 11:53
Swagger? 스웨거(Swagger)는 개발자가 REST 웹 서비스를 설계, 빌드, 문서화, 소비하는 일을 도와주는 대형 도구 생태계의 지원을 받는 오픈 소스 소프트웨어 프레임워크이다. 대부분의 사용자들은 스웨거 UI 도구를 통해 스웨거를 식별하며 스웨거 툴셋에는 자동화된 문서화, 코드 생성, 테스트 케이스 생성 지원이 포함된다. 스웨거 (소프트웨어) - 위키백과, 우리 모두의 백과사전 (wikipedia.org) swagger-typescript-api swagger-typescript-api는 별다른 추가 설정 없이 현재 구현중인 typescript 프로젝트 내 적절한 위치에 추가시킬 수 있는 CLI 명령어 도구이다. acacode/swagger-typescript-api: TypeScript AP..
-
[.NET] 비동기(async, await) 방식의 메소드를 동기 방식으로 안전하게 호출하기.NET/개념 및 유용한 팁 2023. 1. 4. 23:02
가장 좋은 것은 대세에 따라 비동기 방식으로 개발하는게 좋지만, 현 회사에서 ASP.NET Core를 동기방식으로 개발해놔버린지라 좋은 도구를 개같이 쓰거나, 옛날 라이브러리의 방식을 뒤져서 쓰거나 하는 어려움이 따르고 있다. 왠만하면 참겠으나, HttpClient 놔두고 WebRequest 써야 되는 상황이 나오니 머리에 꼭지 돌 지경이다. 하여 동기방식으로 안전하게 호출하는 방식을 찾아보았다. .NET 7.0 이하 버전 기준, 비동기 함수를 .Result 프로퍼티를 통해 직접적으로 결과를 받게끔 개발하게 되면 랜덤한 상황에 Thread 교착상태가 발생하여 갑자기 동작이 멈추는 이슈가 발생할 수 있다. // 이와 같은 호출은 큰 위험이 따른다. var res = _factory.CreateClient(..
-
[.NET] Benchmark - Count() vs Any().NET/개념 및 유용한 팁 2023. 1. 3. 23:11
요약특정 조건에 대한 값이 존재하는지 유무를 따질 땐, Count() 보단 Any()를 사용하는 것이 좋다.조건은 Where()로 처리하는게 더 유리하다.테스트코드using BenchmarkDotNet.Attributes;using BenchmarkDotNet.Jobs;using BenchmarkDotNet.Running;BenchmarkRunner.Run();[MemoryDiagnoser][SimpleJob(runtimeMoniker: RuntimeMoniker.Net60)][SimpleJob(runtimeMoniker: RuntimeMoniker.Net70)]public class CountVsAny{ public int[] items; public CountVsAny() { ..
-
[디자인 패턴] 디자인 패턴을 그림으로 쉽게 설명한 사이트 소개 (refactoring.guru)ETC 2022. 12. 27. 23:57
디자인 패턴에 대해 도입 필요성과 예시를 재밌는 이미지로 쉽게 설명해준 사이트이다. 이전부터 여러 언어로 지원했었는데 정식한국어도 나와 보기 더욱 편해졌다. 아직 리팩터링 부분은 한글화가 안되었지만 디자인 패턴만으로도 내용이 상당히 좋다. https://refactoring.guru/ko/ 리팩터링과 디자인 패턴 Hello, world! Refactoring.Guru는 리팩토링, 디자인 패턴, SOLID 원칙 및 기타 스마트 프로그래밍 주제에 대해 알아야 할 모든 것을 쉽게 찾을 수 있는 자원입니다. 이 사이트에서는 이러한 모든 주제가 어 refactoring.guru 아래 예제는 싱글톤 패턴에 대한 설명을 이미지로 표현하였다. 보라! 이 얼마나 적절한 표현인가!? 글자와 소스만으로 공부하던 것 보다 더..