快速预览 - 图1中文快速预览 - 图2 (opens new window) / English快速预览 - 图3 (opens new window)

YoyoGo 简单、轻量、快速、基于依赖注入的微服务框架

Release Go GoVersion Report快速预览 - 图8 (opens new window) Documentation快速预览 - 图10 (opens new window) Contributors License快速预览 - 图13 (opens new window)

YoyoGo 特色

  • 漂亮又快速的路由器 & MVC 模式 .
  • 丰富的中间件支持 (handler func & custom middleware) .
  • 微服务框架抽象了分层,在一个框架体系兼容各种server实现,如 rest,grpc等 .
  • 充分运用依赖注入DI,管理运行时生命周期,为框架提供了强大的扩展性 .
  • 功能强大的微服务集成能力 (Nacos, Eureka, Consul, ETCD) .
  • 受到许多出色的 Go Web 框架的启发,并实现了多种 server : fasthttpnet.httpgrpc .

framework desgin

QQ交流群: 780385870快速预览 - 图15 (opens new window) (Go浪文学院) , 在这里感谢贾国锦帮忙设计的logo很漂亮。

也可以加入我的公众号,通过公众号入群菜单进入微信群,主要还是在微信上活动啦。

快速预览 - 图16

框架安装

  1. go get github.com/yoyofx/yoyogo

安装依赖 (由于某些原因国内下载不了依赖)

go version < 1.13

  1. window 下在 cmd 中执行:
  2. set GO111MODULE=on
  3. set GOPROXY=https://goproxy.cn,direct
  4. linux 下执行:
  5. export GO111MODULE=on
  6. export GOPROXY=https://goproxy.cn,direct

go version >= 1.13

  1. go env -w GOPROXY=https://goproxy.cn,direct

vendor

  1. go mod vendor // 将依赖包拷贝到项目目录中去

简单的例子

  1. package main
  2. import ...
  3. func main() {
  4. WebApplication.CreateDefaultBuilder(func(rb router.IRouterBuilder) {
  5. rb.GET("/info",func (ctx *context.HttpContext) { // 支持Group方式
  6. ctx.JSON(200, context.H{"info": "ok"})
  7. })
  8. }).Build().Run() //默认端口号 :8080
  9. }

快速预览 - 图17

实现进度

标准功能

  • [X] 打印Logo和日志(YoyoGo)
  • [X] 统一程序输入参数和环境变量 (YoyoGo)
  • [X] 简单路由器绑定句柄功能
  • [X] HttpContext 上下文封装(请求,响应)
  • [X] 静态文件端点(静态文件服务器)
  • [X] JSON 序列化结构(Context.H)
  • [X] 获取请求文件并保存
  • [X] 获取请求数据(form-data,x-www-form-urlencoded,Json ,XML,Protobuf 等)
  • [X] Http 请求的绑定模型(Url, From,JSON,XML,Protobuf)

响应渲染功能

  • [X] Render Interface
  • [X] JSON Render
  • [X] JSONP Render
  • [X] Indented Json Render
  • [X] Secure Json Render
  • [X] Ascii Json Render
  • [X] Pure Json Render
  • [X] Binary Data Render
  • [X] TEXT
  • [X] Protobuf
  • [X] MessagePack
  • [X] XML
  • [X] YAML
  • [X] File
  • [X] Image
  • [X] Template
  • [X] Auto formater Render

中间件

  • [X] Logger
  • [X] StaticFile
  • [X] Router Middleware
  • [X] CORS
  • [X] Binding
  • [X] JWT
  • [X] RequestId And Tracker for SkyWorking

路由

  • GET,POST,HEAD,PUT,DELETE 方法支持
  • 路由解析树与表达式支持
  • RouteData路由数据 (/api/:version/) 与 Binding的集成
  • 路由组功能
  • MVC默认模板功能
  • 路由过滤器 Filter

MVC

  • 路由请求触发Controller&Action
  • Action方法参数绑定
  • 内部对象的DI化
  • 关键对象的参数传递

Dependency injection

  • [X] 抽象集成第三方DI框架
  • [X] MVC模式集成
  • [X] 框架级的DI支持功能

扩展

  • [X] 配置
  • [X] WebSocket
  • [X] JWT
  • swagger
  • [X] GRpc
  • [X] Prometheus