go-fast-framework

module
v0.7.13 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 4, 2026 License: Apache-2.0

README

GoFast Framework

GoFast 框架核心 -- 一个轻量、可扩展的 Go 语言 Web 框架内核。提供 IoC 容器、ServiceProvider 生命周期、Facade 门面、配置文件、结构化日志、GORM 数据库、缓存、文件存储等企业级基础设施。

Go Version License


安装

go get github.com/zhoudm1743/go-fast-framework@latest

快速开始

package main

import (
    "os"
    "os/signal"
    "syscall"

    "github.com/zhoudm1743/go-fast-framework/cache"
    "github.com/zhoudm1743/go-fast-framework/config"
    "github.com/zhoudm1743/go-fast-framework/database"
    "github.com/zhoudm1743/go-fast-framework/facades"
    "github.com/zhoudm1743/go-fast-framework/filesystem"
    "github.com/zhoudm1743/go-fast-framework/foundation"
    gohttp "github.com/zhoudm1743/go-fast-framework/http"
    "github.com/zhoudm1743/go-fast-framework/log"
)

func main() {
    app := foundation.NewApplication(".")

    app.SetProviders([]foundation.ServiceProvider{
        &config.ServiceProvider{},
        &log.ServiceProvider{},
        &cache.ServiceProvider{},
        &database.ServiceProvider{},
        &filesystem.ServiceProvider{},
        &gohttp.ServiceProvider{},
    })
    app.Boot()
    facades.SetApp(app)

    // 使用 Facade 访问服务
    facades.Log().Info("Hello, GoFast!")

    // 启动 HTTP 服务
    go func() {
        facades.Http.Route().Run()
    }()

    quit := make(chan os.Signal, 1)
    signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
    <-quit
    app.Shutdown()
}

完整项目骨架请参阅 github.com/zhoudm1743/go-fast


核心模块

模块 路径 说明
foundation foundation/ IoC 容器与 Application 生命周期管理
contracts contracts/ 所有服务接口契约定义
facades facades/ 全局静态门面,一行代码访问任意服务
config config/ 基于 Viper 的配置管理,Go 代码 + YAML 双模式
log log/ 基于 Zap 的结构化日志,控制台/文件/混合输出
database database/ 基于 GORM 的数据库服务,多连接、时序 ID
cache cache/ 缓存服务,支持内存/Redis/文件驱动
http http/ HTTP 路由服务,双引擎(Gin / Fiber)
filesystem filesystem/ 文件存储,本地/OSS/COS/MinIO/S3
jwt jwt/ JWT 鉴权服务
event event/ 事件系统
queue queue/ 队列系统
schedule schedule/ 基于 cron 的任务调度
fast fast/ CLI 控制台,脚手架命令
id id/ UUID v7 时序 ID 生成
utils utils/ 通用工具函数

HTTP 参数绑定与默认值

控制器通过 ctx.Bind(&req) 自动解析请求参数并校验,支持三类标签:

标签 来源 示例
uri URL 路径参数 uri:"id"
query 查询字符串 query:"page"
json 请求体 json:"name"
binding 校验规则 binding:"required,min=1"

字段可附加 default 标签声明默认值,Bind 会在零值(未传入)时自动填充,无需在控制器里手写 if 判断:

type ListReq struct {
    Page  int    `query:"page" default:"1"`
    Size  int    `query:"size" default:"20"`
    Sort  string `query:"sort" default:"desc"`
    IDs   []int  `query:"ids" default:"1,2,3"`
}

var req ListReq
if err := ctx.Bind(&req); err != nil {
    return ctx.Response().Validation(err)
}

default 支持的类型:基础类型(string / int / uint / float / bool,含底层为基础类型的自定义类型)、指针、切片(逗号分隔)、time.Duration(如 5s)、time.Time(如 2006-01-02)、以及实现 encoding.TextUnmarshaler 的自定义类型。请求中已传入的值不会被默认值覆盖。


HTTP 服务配置

以下配置均为可选项,写入 config/config.yaml 即可生效(Gin / Fiber 双引擎行为一致):

server:
  driver: fiber                 # HTTP 引擎:fiber(默认)| gin
  host: 0.0.0.0
  port: 8080
  cors_allow_origins:           # 放行的跨域来源,默认 "*"
    - https://app.example.com
    - https://admin.example.com
  cors_allow_methods: "GET,POST,PUT,DELETE,PATCH,OPTIONS"       # 放行的跨域方法,默认同左
  cors_allow_headers: "Origin,Content-Type,Accept,Authorization,X-Token"  # 放行的跨域请求头(默认不含 X-Token 等自定义头)
  cors_expose_headers: "X-Request-ID,X-Total-Count"             # 允许浏览器脚本读取的响应头,默认不输出
  cors_allow_credentials: true  # 允许携带 Cookie 等凭据;未配置时仅当 origins 非 * 时自动开启
  cors_max_age: 86400           # 预检结果缓存秒数,默认 86400;<=0 不输出该头
  security_headers_enabled: true          # 基础安全响应头,默认关闭
  security_hsts_max_age: 31536000         # HSTS max-age,默认 31536000;<=0 不输出 HSTS

说明:

  • CORScors_allow_origins 支持字符串数组或逗号分隔字符串。配置多个来源时按请求 Origin 逐请求回显命中的值;启用 cors_allow_credentials 后即使来源为 * 也会回显具体 Origin(CORS 规范禁止 * 搭配凭据)。
  • 安全响应头:开启 security_headers_enabled 后每个响应附带 X-Frame-Options: DENYX-Content-Type-Options: nosniffReferrer-Policy: strict-origin-when-cross-origin,HTTPS 请求额外附带 HSTS。

License

Apache 2.0

Directories

Path Synopsis
Package edition 在编译期固定当前构建形态(SaaS / 独立版)。
Package edition 在编译期固定当前构建形态(SaaS / 独立版)。
Package http 提供框架无关的 HTTP 抽象层。
Package http 提供框架无关的 HTTP 抽象层。
base
Package base 提供 HTTP 层的共享实现,供 fiber / gin 驱动包引用, 同时避免与顶层 framework/http 包产生循环依赖。
Package base 提供 HTTP 层的共享实现,供 fiber / gin 驱动包引用, 同时避免与顶层 framework/http 包产生循环依赖。
cors
Package cors 提供 gin / fiber 双驱动共享的 CORS 配置解析与 Origin 匹配逻辑, 避免 route.go 中各写一份解析代码。
Package cors 提供 gin / fiber 双驱动共享的 CORS 配置解析与 Origin 匹配逻辑, 避免 route.go 中各写一份解析代码。
gin
view
Package view 提供基于 html/template 的 HTML 模板渲染引擎, 实现 contracts.ViewEngine 接口。
Package view 提供基于 html/template 的 HTML 模板渲染引擎, 实现 contracts.ViewEngine 接口。
Package id 提供 GoFast 框架内置的时序 ID 生成器。
Package id 提供 GoFast 框架内置的时序 ID 生成器。
Package tenant 提供租户上下文解析服务(SaaS / 独立版通过构建标签切换实现)。
Package tenant 提供租户上下文解析服务(SaaS / 独立版通过构建标签切换实现)。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL