Skip to content

一个轻量的渐进式golang web框架。 A lightweight progressive web framework written in Go.

License

Notifications You must be signed in to change notification settings

keepchen/go-sail

Repository files navigation

sailboat-solid

Go CodeQL Go Report Card

简体中文 | English

go-sail是什么?

go-sail是一个轻量的渐进式web框架,使用Go语言实现。它并不是重复造轮子的产物,而是站在巨人的肩膀上,整合现有的优秀组件,旨在帮助使用者以最简单的方式构建稳定可靠的服务。
正如它的名字一般,你可以把它视作自己在golang生态的一个开始。go-sail将助力你从轻出发,扬帆起航。

如何使用

推荐go version >= 1.19

go get -u github.com/keepchen/go-sail/v3

import (
    "github.com/gin-gonic/gin"
    "github.com/keepchen/go-sail/v3/sail"
    "github.com/keepchen/go-sail/v3/sail/config"
)

var (
    conf = &config.Config{}
    registerRoutes = func(ginEngine *gin.Engine) {
        ginEngine.GET("/hello", func(c *gin.Context){
            c.String(http.StatusOK, "%s", "hello, world!")
        })
    }
)

func main() {
    sail.WakeupHttp("go-sail", conf).Hook(registerRoutes, nil, nil).Launch()
}

当你看到终端如下图所示内容就表示服务启动成功了:

launch.png

文档

文档传送门

功能特性

  • HTTP响应器
    • 统一响应字段
    • 管理HTTP状态码
    • 管理业务码
  • 常用的组件库
    • Database
    • Email
    • Jwt
    • Kafka
    • Logger
    • Nacos
    • Etcd
    • Nats
    • Redis
  • 服务注册与发现
    • Nacos
    • Etcd
  • 常用的工具类
    • 加解密
    • 文件
    • ip
    • 字符串
    • 随机数
    • 日期时间
    • ...
  • 日志收集与导出
    • 本地文件
    • 导出器
      • Redis
      • Kafka
      • Nats
  • 计划任务
    • 可取消的
    • 一次性的
    • 周期性的
    • Linux Crontab风格的
    • 竞态检测
  • 调用链日志追踪
    • 请求上下文
      • requestId
      • spanId
    • 跨服务
  • 性能监测
    • Prometheus
    • Pprof
  • 多语言错误码
    • 动态注入
  • 基于Redis的分布式锁
    • 阻塞式
    • 非阻塞式
  • 接口文档
    • Redocly
    • Swagger

其他插件

README.md

大感谢

感谢在体验、使用过程中提出宝贵建议和意见以及提供过其他各种帮助的各位小伙伴!

其他

  • 欢迎大家提PR: pull request
  • 欢迎大家提出自己的想法: issue
  • 感谢你的star如果你喜欢这个项目的话 :)

使用案例

stardots.ink

Piggy (telegram mini-game)

FantaGoal

Pikaster

WinGoal

生活好评助手-小程序