Microsoft MVP성태의 닷넷 이야기
닷넷: 2193. C# - ASP.NET Web Application + OpenAPI(Swashbuckle) 스펙 제공 [링크 복사], [링크+제목 복사],
조회: 9612
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)
(시리즈 글이 2개 있습니다.)
.NET Framework: 1028. 닷넷 5 환경의 Web API에 OpenAPI 적용을 위한 NSwag 또는 Swashbuckle 패키지 사용
; https://www.sysnet.pe.kr/2/0/12559

닷넷: 2193. C# - ASP.NET Web Application + OpenAPI(Swashbuckle) 스펙 제공
; https://www.sysnet.pe.kr/2/0/13511




C# - ASP.NET Web Application + OpenAPI(Swashbuckle) 스펙 제공

테스트를 위해 ASP.NET Web Application (.NET Framework) 프로젝트를 Web API 유형으로 생성합니다. 그럼, App_Start 디렉터리에 각종 Config 파일들이 놓이고 이들은 Global.asax.cs의 Application_Start 시점에 호출이 되도록 구성됩니다.

이 상태에서는 그냥 F5 실행 후, ValuesController를 다음의 경로로 호출할 수 있습니다.

[호출]
http://localhost:2289/api/Values

[응답]
<ArrayOfstring xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<string>value1</string>
<string>value2</string>
</ArrayOfstring>

자, 그럼 ValuesController를 OpenAPI 스펙을 이용해 노출해 볼 텐데요, 이에 대해서는 아래의 글에서 잘 설명하고 있습니다.

Swagger For .NET MVC Web API
; https://www.c-sharpcorner.com/article/swagger-for-net-mvc-web-api/

이에 따라 패키지 참조를 하면,

Install-Package Swashbuckle

프로젝트에는 App_Start 디렉터리 밑에 SwaggerConfig.cs 파일이 다음의 내용으로 추가됩니다.

using System.Web.Http;
using WebActivatorEx;
using WebApplication2;
using Swashbuckle.Application;

[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]

namespace WebApplication2
{
    public class SwaggerConfig
    {
        public static void Register()
        {
            var thisAssembly = typeof(SwaggerConfig).Assembly;

            GlobalConfiguration.Configuration
                .EnableSwagger(c =>
                    {
                        c.SingleApiVersion("v1", "WebApplication2");
                    })
                .EnableSwaggerUi(c =>
                    {
                    });
        }
    }
}

이 외에, 딱히 더 해줄 것은 없습니다. 나머지는 Swashbuckle 라이브러리가 Assembly 내의 Controller를 뒤져 자동으로 OpenAPI Spec에 추가하는 작업을 위의 Register 코드로 해주기 때문입니다. 이제 다음의 URL로 실행해 주면,

http://localhost:2289/Swagger

예전에 .NET 5 환경에서 실습했던 것처럼 OpenAPI 스펙을 구현한 웹 화면이 뜹니다.

swagger_aspnet_fx_1.png

이후의 모든 사용법은 "Add Connected Service"를 설명했던 것과 동일합니다.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 1/4/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 16  [17]  18  19  20  21  22  23  24  25  26  27  28  29  30  ...
NoWriterDateCnt.TitleFile(s)
13516정성태1/7/20249668닷넷: 2196. IIS - AppPool의 "Disable Overlapped Recycle" 옵션의 부작용
13515정성태1/6/20249628닷넷: 2195. async 메서드 내에서 C# 7의 discard 구문 활용 사례 [1]
13514정성태1/5/20249512개발 환경 구성: 702. IIS - AppPool의 "Disable Overlapped Recycle" 옵션
13513정성태1/5/20249618닷넷: 2194. C# - WebActivatorEx / System.Web의 PreApplicationStartMethod 특성
13512정성태1/4/20249845개발 환경 구성: 701. IIS - w3wp.exe 프로세스의 ASP.NET 런타임을 항상 Warmup 모드로 유지하는 preload Enabled 설정
13511정성태1/4/20249612닷넷: 2193. C# - ASP.NET Web Application + OpenAPI(Swashbuckle) 스펙 제공
13510정성태1/3/20249352닷넷: 2192. C# - 특정 실행 파일이 있는지 확인하는 방법 (Linux)
13509정성태1/3/202410536오류 유형: 887. .NET Core 2 이하의 프로젝트에서 System.Runtime.CompilerServices.Unsafe doesn't support netcoreapp2.0.
13508정성태1/3/202410036오류 유형: 886. ORA-28000: the account is locked
13507정성태1/2/202411111닷넷: 2191. C# - IPGlobalProperties를 이용해 netstat처럼 사용 중인 Socket 목록 구하는 방법파일 다운로드1
13506정성태12/29/202310260닷넷: 2190. C# - 닷넷 코어/5+에서 달라지는 System.Text.Encoding 지원
13505정성태12/27/202312083닷넷: 2189. C# - WebSocket 클라이언트를 닷넷으로 구현하는 예제 (System.Net.WebSockets)파일 다운로드1
13504정성태12/27/202311204닷넷: 2188. C# - ASP.NET Core SignalR로 구현하는 채팅 서비스 예제파일 다운로드1
13503정성태12/27/202310383Linux: 67. WSL 환경 + mlocate(locate) 도구의 /mnt 디렉터리 검색 문제
13502정성태12/26/202310919닷넷: 2187. C# - 다른 프로세스의 환경변수 읽는 예제파일 다운로드1
13501정성태12/25/202310268개발 환경 구성: 700. WSL + uwsgi - IPv6로 바인딩하는 방법
13500정성태12/24/202310782디버깅 기술: 194. Windbg - x64 가상 주소를 물리 주소로 변환
13498정성태12/23/202312444닷넷: 2186. 한국투자증권 KIS Developers OpenAPI의 C# 래퍼 버전 - eFriendOpenAPI NuGet 패키지
13497정성태12/22/202310623오류 유형: 885. Visual Studiio - error : Could not connect to the remote system. Please verify your connection settings, and that your machine is on the network and reachable.
13496정성태12/21/202310541Linux: 66. 리눅스 - 실행 중인 프로세스 내부의 환경변수 설정을 구하는 방법 (gdb)
13495정성태12/20/202310782Linux: 65. clang++로 공유 라이브러리의 -static 옵션 빌드가 가능할까요?
13494정성태12/20/202310882Linux: 64. Linux 응용 프로그램의 (C++) so 의존성 줄이기(ReleaseMinDependency) - 두 번째 이야기
13493정성태12/19/202310985닷넷: 2185. C# - object를 QueryString으로 직렬화하는 방법
13492정성태12/19/202310364개발 환경 구성: 699. WSL에 nopCommerce 예제 구성
13491정성태12/19/20239379Linux: 63. 리눅스 - 다중 그룹 또는 사용자를 리소스에 권한 부여
13490정성태12/19/202310091개발 환경 구성: 698. Golang - GLIBC 의존을 없애는 정적 빌드 방법
... 16  [17]  18  19  20  21  22  23  24  25  26  27  28  29  30  ...