[![Go Reference][go-reference-badge]][go-reference]
Примечание: На данный момент статус проекта в BETA. Пожалуйста, попробуйте и оставьте отзыв!
Примечание: Если вы считаете, что обнаружили критическую проблему в GG, пожалуйста со
сообщите об этом, связавшись со мной по адресу
Вы можете скачать сборку по этому http://51.250.88.10:8081/ адресу,
Создайте файл конфикурации gg.yaml
в корне проекта.
В файле необходимо установить пути в которых генератор будет искать теги:
packages:
- ./internal/...
- ./pkg/...
так же в файле можно настравивать параметры плагинов:
plugins:
http:
openapi-output: ./docs
Note: Все пути в файле указываються относительно файла конфигруации.
Запуск генерации:
gg run
Теги - это параметры, которые участвуют в процессе генерации.
Cинтаксис: // @<имя тега>:"<значение>,<опция1>,<опция1>,<параметр1=значение1>"
Генерация работает на основе интерфейса либо структуры, для того чтобы включить генерацию необходимо добавить тег @gg:"<имя генератора>"
На данный момент в GG есть такие генераторы:
-
http (генерация транспорта (клиента) REST, JSONRPC; openapi документации; запросов в формате CURL или HTTP; )
-
klog (генерация мидлвары логирования с исрользованием
https://github.com/go-kit/log
) -
slog (генерация мидлвары логирования с исрользованием
https://pkg.go.dev/golang.org/x/exp/slog
) -
middleware (генерация хелперов для мидлвары)
-
config (генерация загрузки настроек из env)
Примечание: По умолчанию генератор оборачивает json и xml ответы в имена возвращаемых значений метода
Теги интерфейса:
Тег | Допустимые значения | Параметры | Описание |
---|---|---|---|
http-server | включить генерирацию сервера | ||
http-type | echo, chi, mux | библиотека генерируемого сервера | |
http-client | влючить генерацию клиента | ||
http-openapi | включить генерацию openapi документации | ||
http-openapi-tags | теги для openapi документации применяемые ко всем методам интерфейса | ||
http-openapi-header | имя HTTP заголовка | title | HTTP заголовок для openapi документации (например если заголовок передаются в через мидлвару в контексте) |
http-api-doc | включить генерацию документации HTML | ||
http-error | путь импорта до структуры ошибки | ошибка которую возвращает метод, используется для openapi документации и генерации клиента | |
http-req | http, curl | генерировать примеры запросов |
Теги метода:
Тег | Допустимые значения | Опции | Параметры | Описание |
---|---|---|---|---|
http-method | GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH | Методы запроса | ||
http-path | HTTP путь, для использования значений в пути надо добавить :name где имя это имя параметра метода значение которого должно быть передано в пути |
|||
http-openapi-tags | имена тегов через заяптую | теги openapi для метода | ||
http-openapi-header | имя HTTP заголовка | required | title | HTTP заголовок для openapi документации (например если заголовок передаются в через мидлвару в контексте) |
http-content-types | json, xml, urlencoded, multipart | тип HTTP контента | ||
http-query-value | имя и значение query параметра через запятую | значения для query (только для клиента) | ||
http-wrap-response | путь разделенный через точку в который надо обернуть | оборачивать ответ (для типа контента json или xml) | ||
http-nowrap-response | не оборачивать ответ в имя возвращаемого значения (только если значение в ответе одно) | |||
http-nowrap-request | не оборачивать запрос в имя параметра (только если параметр один) | |||
http-error | тоже самое, что и для интерфейса только для конекртеного метода | |||
http-time-format | формат времени (все из пакета time) по умолчанию time.RFC3339 |
Теги параметров методов:
Тег | Допустимые значения | Параметры | Описание |
---|---|---|---|
http-name | Имя параметра в HTTP запросе | ||
http-type | path, cookie, query, header, body | Тип нахождения параметра | |
http-required | Помечает поле как обязательное | ||
http-flat | Делает отправку структуры развернутую, а не в поле |
Теги структур:
Тег | Допустимые значения | Параметры | Описание |
---|---|---|---|
http-error-interface | Аннотация метода интерфейса (пример: Code() string ) используется для обработки ошибок в клиенте. |