Описание GoWebCore v0.20.1
Этот репозиторий содержит описание библиотеки GoWebCore.
Статус библиотеки
Библиотека находится в стадии разработки.
Описание библиотеки
Библиотека с базовой функциональностью для разработки web сервисов, в которую входят:
- общие интерфейсы, такие как
logger
, router
, validator
и другие, которые могут быть реализованы уже в конкретных проектах;
- адаптеры логгеров: стандартного и
rs/zerolog
;
- адаптер стандартного http сервера;
- адаптеры http роутеров:
go-chi/chi/v5
;
julienschmidt/httprouter
;
- адаптер cors (
rs/cors
);
- адаптер валидатора (
go-playground/v10
);
- адаптер для отправки ошибок (
sentry
);
- реализация метрик в
mrprometheus.ObserveRequest
;
- планировщик задач;
- работа с пользовательскими разрешениями и привилегиями (ролевая модель);
- разграничение доступа к модулям из различных API;
- часто используемые программные, системные и пользовательские ошибки, которые возникают в разных слоях программы;
- пакеты с часто используемыми функциями: генерация токенов, преобразование IP и т.д.;
- парсеры для некоторых типов данных, которые поступают из http запросов;
- парсеры для работы с файлами и изображениями;
Подключение библиотеки к проекту
go get -u github.com/mondegor/go-webcore@v0.20.1
Установка библиотеки для её локальной разработки
- Выбрать рабочую директорию, где должна быть расположена библиотека
mkdir go-webcore && cd go-webcore
// создать и перейти в директорию проекта
git clone git@github.com:mondegor/go-webcore.git .
cp .env.dist .env
Консольные команды используемые при разработке библиотеки
Перед запуском консольных скриптов сервиса необходимо скачать и установить утилиту Mrcmd.
Инструкция по её установке находится здесь
mrcmd go help
- выводит список всех доступных go команд (docker версия);
mrcmd go-dev help
// выводит список всех доступных go-dev команд (локальная версия);
mrcmd go-dev fmt
// исправляет форматирование кода (gofumpt -l -w -extra ./)
mrcmd go-dev goimports-fix
// исправление imports, если это требуется (goimports -d -local ${GO_DEV_LOCAL_PACKAGE} ./)
mrcmd go-dev check
// статический анализ кода библиотеки (линтеры: govet, staticcheck, errcheck)
mrcmd go-dev test
// запуск тестов библиотеки
mrcmd golangci-lint check
// запуск линтеров для проверки кода (на основе .golangci.yaml
)
mrcmd plantuml build-all
// генерирует файлы изображений из .puml
подробнее