GoLang Swaggo Неправильно инициализирует сваггер

При инициализации такого файла

package main

import (
    "library/internal/handlers"
)

// @title   Music Library API
// @version 1.0

// @host    localhost:8080
// @BasePath /songs


func main() {
    handlers.Run()
}

Сваггер получается таким

{
    "swagger": "2.0",
    "info": {
        "title": "Music Library API",
        "contact": {},
        "version": "1.0"
    },
    "host": "localhost:8080",
    "basePath": "/songs",
    "paths": {}
}

Но при инициализации такого, сваггер остается тем же самым

package main

import (
    "library/internal/handlers"
)

// @title   Music Library API
// @version 1.0

// @host    localhost:8080
// @BasePath /songs

// @Summary         Create tags
// @Description     Save tags data in Db.
// @Param           tags body request.CreateTagsRequest true "Create tags"
// @Produce         application/json
// @Tags            tags
// @Success         200 {object} response

func main() {
    handlers.Run()
}

Также пробовал инициализировать исключительно дополнительную часть

package main

import (
    "library/internal/handlers"
)

// @Summary         Create tags
// @Description     Save tags data in Db.
// @Param           tags body request.CreateTagsRequest true "Create tags"
// @Produce         application/json
// @Tags            tags
// @Success         200 {object} respon

func main() {
    handlers.Run()
}

Сваггер оказывался вообще таким

{
    "swagger": "2.0",
    "info": {
        "contact": {}
    },
    "paths": {}
}

Пробовал "расфасовывать" обе части аннотаций по разным файлам - все тоже самое. Никак не могу понять в чем ошибка


Ответы (1 шт):

Автор решения: Daniel Protopopov

Вот пример работающего файла, в котором есть аннотации метода API:

// UpdateUserStatsHandler Обновление статистики для пользователя
// @Summary Обновление статистики для пользователя
// @Description Обновление статистики для пользователя
// @Param params body UpdateStatsRQ true "User Statistics Data"
// @Tags User Statistics
// @ID update-user-stats
// @Accept json
// @Produce json
// @Success 200 {string} string "OK"
// @Failure 401 {object} helpers.HttpError
// @Failure 400 {object} helpers.HttpError
// @Failure 404 {object} helpers.HttpError
// @Failure 500 {object} helpers.HttpError
// @Router /stats [put]
func UpdateUserStatsHandler(c *gin.Context) {
}

Обязательно нужно чтобы swaggo понимал, откуда берутся структуры типа UpdateStatsRQ, helpers.HttpError - частично для этого используется --parseInternal флаг. -g используется для указания файла, где находится определение API (title, version и т.д), если он отличается от main.go.

→ Ссылка