HTTP_1 : API in GO / gin
golang의 기본 구조! 패키지 하위의, structure와 메소드
이재룡 Jun 26, 2025
[ 1. gin.Engine & MiddleWare ]
import “gin” - ListenAndServe를 편리하게
go getgithub.com/gin-gonic/gin
미들웨어 : 요청과 핸들러(Controller) 사이에서 공통 작업을 처리하는 함수
⇒ 요청을 전처리 or 응답을 후처리할 수 있는 중간 단계 로직
- logging
- recovery
- CORS
- JWT 검증 + 인증/인가
gin module을 활용한 통신 활성화 및 미들웨어 함수 설정
- engin이라는 *gin.Engin 형태의 값을 가지는 Network 구조체 생성
- NewServer( ) 함수 = engin을 가지는 Nework 구조체를 생성 및 return
- gin 객체 생성 = gin.New( )로 engin 생성
- Network 구조체 n에 engin 추가
- StartServer( ) 함수 = n.Engin.Run(”:포트번호”)를 통해 해당 포트를 open
- Network 구조체를 받아서
여기에 미들웨어 함수 추가 (n.engin.Use를 통해 )
[ 2. Network Routing ]
Router는 Spring에서의 controller와 유사
sync.Once.Do: 동일한 userRouter가 여러 개 생기는 것을 방지
⇒ Spring에서의 Bean을 등록하는 @Component 와 유사한 역할
userRouterInstance = &userRouter{router: router}
⇒ &userRouter로 포인터로, 원본 데이터를 수정이 가능하도록 설정
- .create 등은 모두 핸들러의 역할
[ 3. Handler & IRoutes ]
handler는 Spring에서의 Controller의 method와 유사
⇒ 서비스(동작)으로 가기전 필요한 데이터 req, res, session 등을 추출하는 메소드
*gin.Context실제 http 데이터 (Spring에서의 servlet 객체)
⇒ HttpServletRequest request, HttpServletResponse response의 통합 느낌
- IRoutes는 메서드 체이닝을 위한 리턴 인터페이스
⇒ 이런 식으로 하나의 라우터에서 여러 endpoint를 등록하기 위함