简单易用、足够轻量、性能好的 Golang 库

sohaha/zlsgo: 简单易用、足够轻量、性能好的 Golang 库 – Easy to use, light enough, good performance Golang library (github.com)

特性

  • 简单易用、足够轻量
  • 对 REST API 友好
  • 完全兼容 http.HandlerFunc 接口
  • Tree 路由高效并且支持正则
  • 内置支持多端口多服务器
  • 支持中间件
  • 多种日志输出
  • 异常恢复
  • 平滑关闭/热重启
  • 进程守护
  • 依赖注入
  • 遵循最小依赖原则,避免依赖地狱
  • 更多(我还没想到。。。)

安装

  go get -u github.com/sohaha/zlsgo

使用

  // main.go
  package main 

  import (
      "github.com/sohaha/zlsgo/znet"
  )

  func main(){
      // 获取一个实例
      r := znet.New()

      // 设置为开发模式
      r.SetMode(znet.DebugMode)

      // 异常处理
      r.Use(znet.Recovery(func(c *znet.Context, err error) {
          e := err.Error()
          c.String(500, e)
      }))

      // 注册路由
      r.GET("/json", func(c *znet.Context) {
          c.JSON(200, znet.Data{"message":"Hello World"})
      })

      r.GET("/", func(c *znet.Context) {
          c.String(200, "Hello world")
      })

      // 启动
      znet.Run()
  }

启动服务:

go run .

成功后打开浏览器访问 :http://127.0.0.1:3788

更多用法请查看:

路由设置

服务配置


初始化项目

  # go get -u github.com/sohaha/zzz
  zzz init 新建项目目录

热重启

  # 发送 USR2 即可实现热重启
  kill -USR2 pid

考虑到安全问题,默认情况会对执行文件进行 MD5 校验,如果您是想替换掉当前执行文件后进行热更新,请关闭该功能

  // 关闭 md5 验证,方便进行热替换更新
  znet.CloseHotRestartFileMd5()

日常开发

为了提高开发效率,比如代码更新就自动重新编译执行,可以配合 Zzz工具 使用。

Zzz 工具