Go — дружественный к новичкам проект (с интерфейсом)

Go Gin

Этот проект с открытым исходным кодом: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 设置为测试环境

Сначала войдите в интерфейс инициализации службы.

image.pngЗаполните следующийMySQL,RedisПосле заполнения информации о конфигурации нажмите кнопку Initialize.

image.pngКак показано на рисунке выше, это означает, что служба успешно инициализирована, и вам необходимо перезапустить службу.После запуска службы вы увидите интерфейс входа в систему.

03.png

Использовать информацию о пользователе по умолчанию:admin,adminПросто войдите в систему, и вы увидите интерфейс панели инструментов после успешного входа в систему.

04.png

Какие функции были интегрированы?

Оповещение по электронной почте при панике

Информацию об отправителе электронной почты можно настроить в фоновом режиме, как показано на следующем рисунке:

05.png

Шаблон электронной почты выглядит следующим образом:

06.png

Аутентификация интерфейса

В фоновом режиме вы можете установить KEY звонящего, СЕКРЕТ звонящего, стыковку звонящего, примечания и другую информацию.

07.png

08.png

Просто отправьте КЛЮЧ и СЕКРЕТ созданного звонящего абоненту.Вы можете включить/отключить/удалить звонящего, а также авторизовать доступный интерфейс.

09.png

Аутентификация интерфейса основана на двух параметрах в заголовке HTTP.Authorization,Authorization-DateХранить информацию о подписи, в коде предусмотрены алгоритмы шифрования на 3-х языках:Go,PHP,JS.

10.png

инструмент генерации кода

11.png

gormgen, создайте три файла на основе таблицы данных дляadminНапример, таблица будет генерировать:gen_table.mdдокументация MD для аннотаций таблиц,gen_model.goструктура полей таблицы,gen_admin.goТаблица кодов операций CURD.

Значение: при разработке бизнес-требований после создания таблицы данных запустите инструмент генерации кода, и будут сгенерированы все часто используемые операции CURD.При использовании требуются только следующие методы, что значительно повышает эффективность развития бизнеса.

12.png

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 信息Соедините вместе и запишите в журнале.

13.png

Щелкните строку, чтобы просмотреть сведения журнала.

документация по интерфейсу

пройти черезhandlergenСгенерированный код поставляется с документацией по интерфейсу.

14.png

Метрики интерфейса

используется в проектеprometheusДля сбора метрик в проекте по умолчанию включена запись метрик, доступ к которой можно получить черезhttp://127.0.0.1:9999/metricsсмотреть.

GraphQL

используется в проектеgqlgenПосле реализации запроса GraphQL вы обнаружите, что он отличается от демо, инициализированного gqlgen init, потому что код был интегрирован в go-gin-api, например, ссылки и журналы в основном пакете проекта.

На данный момент реализовано только Demo, резолвер использует смоделированные данные, но также реализовано использование повторно используемых сервисов, код прокомментирован, и те, кому интересно, могут его подробно изучить.

Prometheus

запускатьPrometheusконфигурационный файл, см.:

  • ./deploy/prometheus/prometheus.yml

Аналогичный эффект:

15.png

16.png

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.

адрес проекта

Адрес источника

GitHub.com/Бессердечный не…

онлайн-документация

у-у-у-у. Yuque.com/Heartless not…

Если у вас есть хорошие идеи и предложения, добро пожаловать в друзья для обмена.