Этот проект с открытым исходным кодом:go-gin-api
, в настоящее время 800+ звезд.
go-gin-api
Это API-фреймворк с модульной конструкцией на основе Gin. Он инкапсулирует часто используемые функции, прост в использовании и предназначен для быстрых бизнес-исследований и разработок. В то же время он добавляет больше ограничений, ограничивающих участников разработки. команда проекта, чтобы избежать хаоса и свободного кодирования.
Может быть запущен сразу после загрузки
$ git clone https://github.com/xinliangnote/go-gin-api
$ cd go-gin-api
$ go run main.go -env fat // -env fat 设置为测试环境
Сначала войдите в интерфейс инициализации службы.
Заполните следующийMySQL
,Redis
После заполнения информации о конфигурации нажмите кнопку Initialize.
Как показано на рисунке выше, это означает, что служба успешно инициализирована, и вам необходимо перезапустить службу.После запуска службы вы увидите интерфейс входа в систему.
Использовать информацию о пользователе по умолчанию:admin
,admin
Просто войдите в систему, и вы увидите интерфейс панели инструментов после успешного входа в систему.
Какие функции были интегрированы?
Оповещение по электронной почте при панике
Информацию об отправителе электронной почты можно настроить в фоновом режиме, как показано на следующем рисунке:
Шаблон электронной почты выглядит следующим образом:
Аутентификация интерфейса
В фоновом режиме вы можете установить KEY звонящего, СЕКРЕТ звонящего, стыковку звонящего, примечания и другую информацию.
Просто отправьте КЛЮЧ и СЕКРЕТ созданного звонящего абоненту.Вы можете включить/отключить/удалить звонящего, а также авторизовать доступный интерфейс.
Аутентификация интерфейса основана на двух параметрах в заголовке HTTP.Authorization
,Authorization-Date
Хранить информацию о подписи, в коде предусмотрены алгоритмы шифрования на 3-х языках:Go
,PHP
,JS
.
инструмент генерации кода
gormgen
, создайте три файла на основе таблицы данных дляadmin
Например, таблица будет генерировать:gen_table.md
документация MD для аннотаций таблиц,gen_model.go
структура полей таблицы,gen_admin.go
Таблица кодов операций CURD.
Значение: при разработке бизнес-требований после создания таблицы данных запустите инструмент генерации кода, и будут сгенерированы все часто используемые операции CURD.При использовании требуются только следующие методы, что значительно повышает эффективность развития бизнеса.
handlergen
, исходя из определенияHandler
в файлеtype interface{}
Метод среднего интерфейса для создания файлов.
Например, определен метод:
// Login 管理员登录
// @Tags API.admin
// @Router /api/admin/login [post]
Login() core.HandlerFunc
Сгенерированный метод:
type loginRequest struct {
}
type loginResponse struct {
}
// Login 管理员登录
// @Summary 管理员登录
// @Description 管理员登录
// @Tags API.admin
// @Accept multipart/form-data
// @Produce json
// @Success 200 {object} loginResponse
// @Failure 400 {object} code.Failure
// @Router /api/admin/login [post]
func (h *handler) Login() core.HandlerFunc {
return func(c core.Context) {
}
}
Значимость: Специалист по исследованиям и разработкам, отвечающий за выполнение этого требования, проходит определение.type interface{}
Определяется метод, который необходимо разработать, и выполняется инструмент генерации кода.Пустая реализация каждого метода будет сгенерирована в отдельном файле.Разработчикам нужно только реализовать свои методы, что удобно для разделения труда и кода управление.
журнал интерфейса
пройти через链路 ID
может请求信息
,响应信息
,调用第三方 HTTP 接口的信息
,调用第三方 gRPC 接口的信息
,调试信息
,执行的 SQL 信息
,执行的 Redis 信息
Соедините вместе и запишите в журнале.
Щелкните строку, чтобы просмотреть сведения журнала.
документация по интерфейсу
пройти черезhandlergen
Сгенерированный код поставляется с документацией по интерфейсу.
Метрики интерфейса
используется в проектеprometheus
Для сбора метрик в проекте по умолчанию включена запись метрик, доступ к которой можно получить черезhttp://127.0.0.1:9999/metricsсмотреть.
GraphQL
используется в проектеgqlgen
После реализации запроса GraphQL вы обнаружите, что он отличается от демо, инициализированного gqlgen init, потому что код был интегрирован в go-gin-api, например, ссылки и журналы в основном пакете проекта.
На данный момент реализовано только Demo, резолвер использует смоделированные данные, но также реализовано использование повторно используемых сервисов, код прокомментирован, и те, кому интересно, могут его подробно изучить.
Prometheus
запускатьPrometheus
конфигурационный файл, см.:
- ./deploy/prometheus/prometheus.yml
Аналогичный эффект:
Loki
Loki
Это горизонтально масштабируемая, высокодоступная, многопользовательская система агрегации журналов, вы можете изучить ее, если вам интересно.
включитьLoki
конфигурационный файл, см.:
- ./deploy/loki/loki.yaml
- ./deploy/loki/promtail.yaml
Какие компоненты использовались?
- Ограничение тока интерфейса скорости поддержки
- Поддержка уведомлений по электронной почте при возникновении паники
- Поддержка междоменного интерфейса cors
- Поддержка ведения журнала метрик Prometheus
- Поддержка генерации документации интерфейса Swagger
- Поддержка языка запросов GraphQL
- Поддержка трассировки внутренних ссылок проекта
- Поддержка профилирования pprof
- Поддержка аутентификации интерфейса jwt
- Поддержка errno для унифицированного определения кодов ошибок
- Поддержка сбора журналов zap
- Поддержка разбора файла конфигурации viper
- Поддержка компонентов базы данных Gorm
- Поддержка компонентов go-redis
- Поддержка спецификации возвращаемого значения RESTful API.
- Поддержка инструментов генерации кода gormgen, handlergen.
- Поддерживается веб-интерфейс с использованием шаблона Light Year Admin.
адрес проекта
Адрес источника
онлайн-документация
у-у-у-у. Yuque.com/Heartless not…
Если у вас есть хорошие идеи и предложения, добро пожаловать в друзья для обмена.