괴발개발 성장기

Study/Go 언어

[Golang] 스웨거(Swagger) 사용하기

지니유 2023. 9. 4. 08:58
반응형

# 배경

2년 전에 자바는 API문서를 자동화로 만들어 주는게 있는데 go는 있냐는 말에 열심히 찾았다. 그 때 정보가 지금처럼 많지 않았다.

그래도 만드는 법을 알게 되었다. 하지만 회사 서비스에 적용시키기엔 우선순위가 낮았다.

2년이 지난 지금 스웨거를 적용시키게 되었다.

기본적인 것을 잘되지만 하다보면 예외들도 많았다. 내가 찾아본 것들을 기록해보자!

 

# 하는 방법

1) 우선 echo-swagger 설치하자

go get -u github.com/swaggo/echo-swagger

2) import에 2개의 주소를 추가하자

	echoSwagger "github.com/swaggo/echo-swagger"
    	_ "study-service/docs"

  _ "study-service/docs" 이걸 넣지 않으면 에러가 발생한다. 

2023.08.31 - [Study/Error] - [Error] 스웨거(Swagger)로 문서를 만들다가 나타난 에러 해결책

 

[Error] 스웨거(Swagger)로 문서를 만들다가 나타난 에러 해결책

간단하게 스웨거 사용하려고 초기 작업을 하는 과정에서 에러가 발생했다. 설치를 다하고 코드도 다 썼는데 해당 주소에 접속을 하면 에러 발생한다. # 에러 메시지 Fetch error Internal Server Error doc.

pink1016.tistory.com

 

3)  접속할 라우터를 정하자

나는 메인에 라우터를 넣었다.

e := echo.New()

e.GET("/swagger/*", echoSwagger.WrapHandler)

e.Start(":" + config.Config.HttpPort)

4) Controller에 함수위에 주석으로 형식에 맞게 작성하면 된다.

// Create
// @Tags 회원
// @Summary 멤버 등록
// @Description 함수에 대한 상세 내용 쓰기
// @Success 201 {object} nil
// @Router /api/member [post]

예를 들으면 주석으로 다 작성할 수 있다. 나는 우선 기본적인 것만 적었다. 다양한 것들이 있다.

 

5) 수정하고 나면 run를 한다.

swag init

실행이 main이면 가능하다. 

우리는 application.go에서 시작한다. 그래서

swag init -g application.go

이렇게 실행하면 된다.

 

6) 주소에 접속을 한다.

http://localhost:7000/swagger/index.html

# 참고

https://github.com/swaggo/echo-swagger#start-using-it

 

GitHub - swaggo/echo-swagger: echo middleware to automatically generate RESTful API documentation with Swagger 2.0.

echo middleware to automatically generate RESTful API documentation with Swagger 2.0. - GitHub - swaggo/echo-swagger: echo middleware to automatically generate RESTful API documentation with Swagge...

github.com

 

# 참고 이슈

https://github.com/YooGenie/study-service/issues/42

 

스웨거 적용시킨다 · Issue #42 · YooGenie/study-service

 

github.com

 

반응형