Framework/Spring

[Spring] Open API 활용하기

검은 까마귀 2023. 12. 15. 00:21

앞서 포스팅 진행했던 REST Docs 작성하기 이후에 진행되는 내용이니

앞선 포스팅을 보고 다음차례를 진행해주시면 됩니다!

 

2023.12.13 - [Framework/Spring] - [Spring] Rest Doc 활용하기

 

[Spring] Rest Doc 활용하기

MSA 프로젝트를 진행하다가 API 문서에 대해서 팀원분이 Swagger를 쓰겠다고 했을때, 저는 안되는 이유에 대해서 설명을 해드렸습니다. " 서비스가 쪼개질때마다 swagger 문서가 production에 생길텐데,

blaj2938.tistory.com

 

 

 

 

저는 테스트 코드를 작성하고 요로코롬 Rest Docs을 생성을 했습니다.!!

하 테스트 코드를 작성하는 과정은 쉽지 않습니다~~

 


많은 분들이 TDD를 지향해야한다. TDD를 배워야한다.TDD가 유행이다~

저는 개인적으로 내가 지금 하고 있는 작업이 내가 필요해서 하는가? 유행하는 기술이라 하는가? 를 구분해서 진행하는 분들이 많아졌으면 좋겠습니다.

 

신입이고 주니어 분들에게는 API 테스트코드 작성보다는 먼저 Util 성격의 기본적인 테스트 코드를 작성해보고 진행하시면 면 왜 이게 필요한지 알 수 있다고 생각합니다!

아무튼 본론으로 들어가서,

지금 현재 만들어진 파일들을 Open API의 json파일로 추출하는 과정이 남았습니다.

 

  1. 서비스별 Rest Docs을 생성한다.
  2. 생성된 Rest Doc을 Open API 형태의 Json 포맷으로 만다.
  3. API 문서 전용 인스턴스를 생성한다.
  4. 생성된 인스턴스에 swagger ui 컨테이너를 배포한다.
  5. swagger ui에 Open API json 파일을 밀어 넣는다.

이 과정 중 2번에 해당하는 과정이죠!

 

2. 생성된 Rest Doc을 Open API 형태의 Json 포맷으로 만다.

 

이 과정이 복잡하면서도 뚝딱하면 되더라고요!

 

먼저 기존의 있던 build.gradle 변경을 해주면 됩니다.

testImplementation 'com.epages:restdocs-api-spec-mockmvc:0.16.2'

openapi3 {
    server = 'https://localhost:8080'
    title = 'reservation'
    description = 'reservation API description'
    version = '0.0.1'
    format = 'json'
    outputFileNamePrefix = 'open-api-3-reservation-service'
    outputDirectory = 'src/main/resources/static/docs'
}

 

 

적용을 하고 다시 build를 다시 합니다.

 

 

그리고 위에 보시는 이미지에서 openapi3로 gradle을 활용해서 말아주시면 됩니다.

 

여러 레퍼런스에서는 ./gradlew openapi3 cli를 통해 진행하라고 하지만

윈도우에서 또 환경변수 설정하고 이러기 너무 귀찮아서 그냥 GUI로 끝내시면 됩니다

 

 

이렇게 형광팬으로  json파일이 나오면서 옆에 ui 보이시죠? 저렇게 나온답니다!!

"인텔리제이 그는 신이야.... "

 

 

 

별로 어렵지 않아요~~ 단계적으로 차근차근 하다보면 gradle이 잘 말립니다

다음으로는 ec2에 swagger를 띄우고 배포를 진행해야하는데 아직 결정을 못했습니다.

eks 내부로 띄워야할지 아니면 외부로 띄워서 인바운드 걸어두고 관리자만 접속이 가능하도록 인가를 해야할지....

 

 

 

저는 한 두시간 정도 삽질해서 결과물이 나왔지만 잘 안되는 분들도 계실테니

궁금한 점은 댓글로 남겨주시면 빠르게 답변하겠습니다!

 

멋진 피드백은 언제나 환영입니다~ 감사합니다

 

https://learn.openapis.org/

 

Getting Started

For API designers and writers wishing formalize their API in an OpenAPI Description document.

learn.openapis.org

반응형

'Framework > Spring' 카테고리의 다른 글

[Spring Security] Intro. Deep Dive  (0) 2024.05.08
[Spring] DB 접근 방법  (0) 2024.04.10
[Spring] Rest Doc 활용하기  (0) 2023.12.13
[Spring] Spring MVC 패턴의 LifeCycle  (0) 2023.10.26
[Spring] JPA의 Persistence  (0) 2022.04.11