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 스펙을 구현한 웹 화면이 뜹니다.
이후의 모든 사용법은
"Add Connected Service"를 설명했던 것과 동일합니다.
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]