swaggo 주석 순서를 외우는 게 지겨워서 이걸 만들었습니다

발행: (2026년 1월 10일 오전 07:42 GMT+9)
5 분 소요
원문: Dev.to

Source: Dev.to

Introduction

Swaggo는 Go API 문서화를 위해 훌륭하지만, 어노테이션에 필요한 인수 순서가 번거로울 수 있습니다. 다음과 같이 작성할 때마다:

// @Param id query string true "User ID"

정확한 순서인 name, in, type, required, description을 기억해야 합니다. 이 때문에 실수가 잦아지고, 오타가 발생하며, 팀 Slack에서 “순서가 뭐였지?” 라는 질문이 자주 오게 됩니다.

The Problem with Positional Arguments

  • Memory load – 각 인수의 위치를 외워야 합니다.
  • Common mix‑upstyperequired 플래그가 종종 뒤바뀝니다.
  • Silent errors – 구조체 이름(dto.UserReponse 등)의 오타가 런타임까지 잡히지 않습니다.
  • Onboarding friction – 새로운 개발자는 API 로직에 집중하기보다 순서를 배우는 데 시간을 씁니다.

Solution: Named‑Parameter Annotations

VS Code 확장 프로그램을 사용하면 Swaggo 어노테이션을 이름이 지정된 파라미터 형태로 작성할 수 있습니다:

@Param(name="id", in="query", type=string, required=true, desc="User ID")
@Success(code=200, schema=dto.UserResponse, desc="Success")

이 확장은 실시간으로 이를 일반 Swaggo 주석으로 변환하므로, 소스 파일에는 여전히 표준 // @Param 구문이 남아 있지만, 더 읽기 쉬운 이름이 지정된 파라미터 버전을 편집하게 됩니다.

How It Works

  • No order memorization – 키(name, in, type, required, desc)를 원하는 순서대로 지정합니다.
  • IDE assistance – 어노테이션 이름과 Go 타입에 대한 자동 완성, 그리고 생성된 주석을 보여주는 툴팁 제공.
  • Snippets – 흔히 사용하는 패턴을 빠르게 삽입.
  • Live conversion – 입력하는 즉시 확장이 기본 주석을 업데이트합니다.

Example

Named‑parameter version (what you edit)

@Summary("Create classroom")
@Tags("classroom", "admin")
@Param(name="body", in="body", type=dto.CreateClassroomRequest, required=true, desc="Classroom creation request")
@Success(code=200, schema=dto.ClassroomResponse, desc="Success")
@Router("/classrooms", "post")
func CreateClassroom(c echo.Context) error {
    // your code
}

Generated Swaggo comment (what ends up in the file)

// @Summary Create classroom
// @Tags classroom,admin
// @Param body body dto.CreateClassroomRequest true "Classroom creation request"
// @Success 200 {object} dto.ClassroomResponse "Success"
// @Router /classrooms [post]
func CreateClassroom(c echo.Context) error {
    // your code
}

첫 번째 블록만 편집하면 되고, 확장이 변환을 담당합니다.

Benefits

  • Reduced syntax questions – 새로운 팀원이 인수 순서에 대해 묻는 일이 줄어듭니다.
  • Fewer mistakes – 형식이 잘못된 어노테이션 때문에 코드 리뷰에서 발생하는 잡음이 감소합니다.
  • Better IDE support – 자동 완성과 타입 검증으로 오류를 조기에 잡을 수 있습니다.
  • Easier refactoring – IDE가 어노테이션에 사용된 Go 타입을 검증할 수 있어 리팩터링이 쉬워집니다.

Installation

VS Code Marketplace에서 “Swaggo”를 검색하거나 직접 설치합니다:

  • Marketplace link:
  • GitHub repository:

Limitations

  • 이 확장은 편집기 측면에서만 편리함을 제공하며, 참조된 타입이 실제로 존재하는지는 검증하지 않습니다. 해당 검증은 여전히 Swaggo CLI가 수행합니다.
  • 현재는 VS Code 전용이며, 다른 에디터는 향후 수요가 있으면 지원될 수 있습니다.

Conclusion

이름이 지정된 파라미터 어노테이션을 사용하면 Swaggo의 위치 기반 인수 순서를 외울 필요가 없어져, Go에서 Swagger 문서를 더 빠르고 명확하게, 오류를 최소화하면서 작성할 수 있습니다. 이 확장은 무료이며 기존 Swaggo 도구와 호환되고, 코드와 100 % 호환됩니다.

GitHub에 이슈를 열어 개선 사항이나 제안을 남겨 주세요. 즐거운 문서화 되세요!

Back to Blog

관련 글

더 보기 »

Zig vs Go: init와 run

초기화 Go에서는 모듈을 다음과 같이 초기화합니다: ```bash go mod init module-name ``` Zig에서는 동일한 작업을 간단히 다음과 같이 수행합니다: ```bash zig init ``` Zig은 명시적인 “module” 선언이 필요하지 않습니다.

Go의 비밀스러운 삶: 인터페이스

제14장: 행동의 형태 그 목요일, archive는 유난히 추웠다. radiators는 쉿소리를 내며 삐걱거렸고, draft와의 싸움에서 패배를 면치 못했다…