[.NET]Swagger를 이용하여 Azure API APP 문서 만들기

Swagger를 사용하면 개발된 Restful API에대한 스팩을 별도의 문서를 만들지 않고도 자동으로 문서화 하여 웹형태로 쉽게 제공 할 수 있다.

먼저, Swagger에서 제공하는 API 스팩 문서 화면을 살펴 보자.

Rest API의 URL(Route 주소)목록을 제일 먼저 볼 수 있는데, 직관적으로 해당 API APP에 어떤기능들 있는지 한번에 파악 할 수 있게해준다. 특정 URL을 클릭하면 그 API안에 구현된 HTTP Method 리스트를 볼 수 있다.

Restful API의 동작은 동일한 Route 주소에 HTTP Method를 통해서 CRUD(생성 – Post, 조회 – Get, 변경 – Put, 삭제 – Delete)기능을 구분하며 이러한 구분을 Swagger에서는 4가지 색으로 구분하여 표현해준다.

다음으로, Get Method를 클릭하여 Swagger에서 해당 API에 대한 문서를 어떻게 제공하는지 실제 코드랑 비교하 살펴보자.

Swagger Source Code

// GET api/values/5
[SwaggerOperation("GetById")]
[SwaggerResponse(HttpStatusCode.OK)]        
[SwaggerResponse(HttpStatusCode.NotFound)]
public string Get(int id)
{
    return "value";
}

Swagger Document

첫 번째, 최상단의 GET /api/Values/{id}는 Rest API를 호출하기 위한 라우트 주소로 메서드 역할을 정의하는 public string Get(int id) 의 정보이다.

두 번째, 최상단 바로 및의 Parameters영역은 API의 메서드의 변수에 대한 설명을 확인 할 수 있으며, Value 필드에 임의 값을 넣고 테스트 해볼 수 도 있다. 
(값을 넣고 아래 Try it Out! 이라는 버튼을 누르면 개발한 API가 동작한다.)

마지막, Response Messages영역은 API가 HTTP통신을 할때 반환하는 HttpResponseMessage의 HTTP State Code에 대한 정의이다. Swashbuckle의 속성 설정 방법을 통해서 정의 할 수 있다.
(예: [SwaggerResponse(HttpStatusCode.OK)], [SwaggerResponse(HttpStatusCode.NotFound)])

Restful API를 개발하는 사람이라면 시각화가 되어 있지 않은 API의 각종 정보들을 다른 사람에게 전달하기 정말 까다로운 일이라는 것을 알고 있을 것이다. 이런 고충을 Swagger Framework을 통해서 해소 할 수가 있다. 

Azure의 APP API서비스는 Swagger Framework을 기본으로 제공해 주고 있어서 Azure에서 API를 개발 할 때, 몇가지 정의 방법으로 인터페이스 설명 및 기본 설정을 하면, Swagger.UI에서 보기 좋게 문서화 해서 Web으로 잘 보여 준다. 그래서 개발자가 문서 작업때문에 시간들일 필요도, 머리 아플일도 전혀 없다. 그리고 표준 Rest API 정의에 대한 표현을 Swagger에서 정말 잘 다루고 있기 때문에 어느정도 Rest API에 대한 인식이 있다면 API를 제공받은 사람 입장에서도 서비스에 대한 정보를 별다른 노력 없이 쉽게 인식할 수 있다. 

[.NET]Azure API APP에서 Swagger Framework 바로 사용하기

기존 웹프로젝트에 Swagger Framework을 사용하려면 프레임웍 패키지를 다운받아 설치하고 Swagger 실행을 위한 몇몇의 Config 셋팅을 하는 수고를 했어야 했다. 그런데 Azure에서 제공하는 Azure API APP Service 프로젝트를 생성하면 기본 셋팅으로 Swagger Framework이 설치 및 기본 셋팅이 되어 있는 것을 NuGet 패키지 관리자에 들어가 보면 다음과 같이 확인 할 수 있다.

기본 설치가 되어 있기 때문에 별다른 걱정 없이 바로 쓰기만 하면 된다.
정말인지 확인하기 위해서 새프로젝트를 만든뒤 바로 실행 해보자.

!?!? 권한이 없단다. 
이런 403.14 페이지를 보는 이유는 API는 Application Programming Interface이기 때문에 UI(User Interface)가 없기 때문이다. 그렇다면 어떻게 API에 대한 정보를 볼 수 있을 것인가? 이럴때 Swagger가 제 역할을 한다.

당황하지 말고 주소의 주소에 Swagger라고 뒤에 추가 해보면 Swagger에서 제공하는 Swaager.UI를 경험할 수 있다.
(예: http://localhost:54499/ → http://localhost:54499/swagger)

아래 그림은 새 프로젝트 만들고 예제로 들어가 있는 샘플코드에 대한 화면이다. 

그림에서 보면 알 수 있듯이 Swagger.UI에서 제공하는 정보들은 개발된 API에 대한 스팩 문서들이다.
이 문서들은 API 스팩 문서로 별도의 문서를 작성하지 않아도 개발자가 개발하면서 주석으로 정의해 놓은(Swagger 문법?에 따라서) 것들을 Swagger.UI를 통해서 단번에 확인 할 수 있다.