Этот проект с открытым исходным кодом: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…
Если у вас есть хорошие идеи и предложения, добро пожаловать в друзья для обмена.