tg

package module
v1.0.4 Latest Latest
Warning

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

Go to latest
Published: Nov 21, 2024 License: MIT Imports: 33 Imported by: 0

README


一个轻量级的GO WEB应用框架

  • 💪 ORM思想链式操作CRUD
  • 🔥 应用级提炼封装更贴近业务场景
  • 🚀 高效路由管理,支持灵活的URL映射
  • 🛠️ 自动化的代码生成工具,快速搭建项目基础结构

ThinkGO框架

ThinkGO 是一个轻量级的GO WEB应用框架,提供一套结构化、模块化的开发环境,为减少开发人员的学习成本,提高团队的开发效率而生。

目录结构

tg
├── cmd                // 命令行工具
│   └── tg
│       └── main.go
├── tgcfg              // 配置文件
│   └── config.go
├── tglog              // 日志
│   └── logger.go
├── tgsv               // 服务
│   └── server.go
├── tgtoken            // jwt相关
│   └── token.go
├── tgutl              // 工具
│   └── utils.go
├── validate.go        // 验证器
├── README.md
├── context.go         // 链路
├── go.mod
├── go.sum
├── middleware.go      // 中间件
├── mysql.go           // mysql数据库
├── router.go          // 路由
└── tg.go              // 引擎

安装

方式一

安装到您自己的项目中

go get -u github.com/think-go/tg

然后在您项目中可以像下面这样去编写

tgcfg.Config.Server.Address = ":8808"
engine := tg.New()
engine.GET("/hello", func(ctx *tg.Context) {
  ctx.Success("ok")
})
router := engine.Group("/api/v1")
{
  router.GET("user/list", func(ctx *tg.Context) {
    ctx.Success("ok")
  })
  router.POST("user/delete", func(ctx *tg.Context) {
    ctx.Success("ok")
  })
}
engine.Run()
方式二

通过框架工程去编写

1.通过命令行去初始化项目,先安装命令行工具

git clone https://github.com/think-go/tg.git && cd tg/cmd/tg && go install

然后就可以在全局通过 tg 命令去创建项目

tg init demoApp

2.也或者可以直接克隆项目使用

git clone https://github.com/think-go/think-go.git

安装依赖

go mod tidy

启动项目

go run main.go

说明

think-go 是基于 tg 核心包构建的基础工程项目,旨在为开发者提供一套结构化、模块化的开发环境。think-go 精心设计了路由管理、中间件配置以及控制器实现等核心组件的组织方式与实现路径,确保了代码的高可读性和维护性。通过明确规定各功能模块的存放目录及实现方法,不仅简化了项目的搭建过程,还极大地方便了后续的迭代与扩展,使团队协作更加高效顺畅。无论是初学者还是有经验的开发者,都能在 think-go 的帮助下快速上手,专注于业务逻辑的实现,而无需从零开始搭建项目架构。

Documentation

Index

Constants

View Source
const StartText = `` /* 265-byte string literal not displayed */

Variables

View Source
var ErrorCode = &errorCode{
	VALIDATE:    10001,
	TokenExpire: 10002,
	EXCEPTION:   20001,
	MySqlError:  20002,
}

ErrorCode 初始化错误码

Functions

func BeginTransaction

func BeginTransaction(source ...Source) *begin

BeginTransaction 开启事务,如果不传数据源默认走的是配置文件里默认的,传了可以指定任意的数据源

func CheckParams

func CheckParams(req any)

func Db

func Db(tableName string, source ...Source) (db *tdb)

Db 如果不传数据源默认走的是配置文件里默认的,传了可以指定任意的数据源

func ExecSql

func ExecSql(source ...Source) *sqlx.DB

ExecSql 自定义书写sql语句

Types

type Context

type Context struct {
	Response http.ResponseWriter
	Request  *http.Request
	// contains filtered or unexported fields
}

Context 上下文

func (*Context) BindStructValidate

func (ctx *Context) BindStructValidate(req any, defaultFormMaxMemory ...int64)

BindStructValidate 结构体参数映射,具有参数验证功能

func (*Context) ClientIP

func (ctx *Context) ClientIP() string

ClientIP 获取IP

func (*Context) Download

func (ctx *Context) Download(fileName string)

Download 文件下载

func (*Context) Fail

func (ctx *Context) Fail(message string, option ...FailOption)

Fail 异常输出信息

func (*Context) FormFile

func (ctx *Context) FormFile(key string, defaultFormMaxMemory ...int64) *multipart.FileHeader

FormFile 获取文件

func (*Context) FormFiles

func (ctx *Context) FormFiles(key string, defaultFormMaxMemory ...int64) []*multipart.FileHeader

FormFiles 获取多个文件

func (*Context) Get

func (ctx *Context) Get(key string) (value any, ok bool)

Get 读取缓存信息

func (*Context) GetDefaultQuery

func (ctx *Context) GetDefaultQuery(key string, value string) string

GetDefaultQuery 获取GET请求参数,如果没有内容赋默认值

func (*Context) GetQuery

func (ctx *Context) GetQuery(key string) string

GetQuery 获取GET请求参数

func (*Context) HTML

func (ctx *Context) HTML(html string)

HTML 输出页面

func (*Context) JSON

func (ctx *Context) JSON(code int, data any)

JSON 输出JSON

func (*Context) Next

func (ctx *Context) Next()

Next 中间件向下执行

func (*Context) PostDefaultForm

func (ctx *Context) PostDefaultForm(key string, value any, defaultFormMaxMemory ...int64) gjson.Result

PostDefaultForm 获取POST请求参数,如果没有内容赋默认值

func (*Context) PostForm

func (ctx *Context) PostForm(key string, defaultFormMaxMemory ...int64) gjson.Result

PostForm 获取POST请求参数

func (*Context) Redirect

func (ctx *Context) Redirect(url string)

Redirect 重定向

func (*Context) Set

func (ctx *Context) Set(key string, value any)

Set 写入缓存信息

func (*Context) Stream

func (ctx *Context) Stream(data io.Reader)

Stream 流式数据转发

func (*Context) Success

func (ctx *Context) Success(data interface{}, option ...SuccessOption)

Success 成功输出信息

func (*Context) View

func (ctx *Context) View(name string, data any, expression ...string)

View 输出页面模板

func (*Context) XML

func (ctx *Context) XML(code int, data any)

XML 输出XML

type CountOption

type CountOption struct {
	Debug      *bool  // 是否打印sql默认不打印
	DeleteTime string // 软删除字段名
}

type DecrOption

type DecrOption struct {
	Debug      *bool  // 是否打印最终执行的SQL语句,默认不打印
	AutoTime   *bool  // 是否开启自动时间戳,默认不开启
	UpdateTime string // 更新时间字段名,默认 update_time
	AllProtect *bool  // 全量更新保护,默认开启,防止忘记写WHERE条件误更新所有数据
}

type DeleteOption

type DeleteOption struct {
	IsDeleteFlag  *bool  // 是否是软删除,默认是
	Debug         *bool  // 是否打印最终执行的SQL语句,默认不打印
	DeleteTime    string // 删除时间字段名,默认 delete_time
	DeleteProtect *bool  // 删除保护,默认开启,防止忘记写WHERE条件误删除所有数据,只争对物理删除有效
}

type Engine

type Engine struct {
	// contains filtered or unexported fields
}

Engine 定义引擎结构体

func New

func New() *Engine

New 初始化tg引擎

func (*Engine) ALL

func (group *Engine) ALL(relativePath string, handlerFunc HandlerFunc, middlewareFunc ...MiddlewareFunc)

ALL ALL请求

func (*Engine) Bind

func (group *Engine) Bind()

Bind 绑定控制器,可以用api结构体的方式定义路由

func (*Engine) DELETE

func (group *Engine) DELETE(relativePath string, handlerFunc HandlerFunc, middlewareFunc ...MiddlewareFunc)

DELETE DELETE请求

func (*Engine) GET

func (group *Engine) GET(relativePath string, handlerFunc HandlerFunc, middlewareFunc ...MiddlewareFunc)

GET GET请求

func (*Engine) Group

func (group *Engine) Group(relativePath string, middlewareFunc ...MiddlewareFunc) *routerGroup

Group 分组路由

func (*Engine) HEAD

func (group *Engine) HEAD(relativePath string, handlerFunc HandlerFunc, middlewareFunc ...MiddlewareFunc)

HEAD HEAD请求

func (*Engine) OPTIONS

func (group *Engine) OPTIONS(relativePath string, handlerFunc HandlerFunc, middlewareFunc ...MiddlewareFunc)

OPTIONS OPTIONS请求

func (*Engine) PATCH

func (group *Engine) PATCH(relativePath string, handlerFunc HandlerFunc, middlewareFunc ...MiddlewareFunc)

PATCH PATCH请求

func (*Engine) POST

func (group *Engine) POST(relativePath string, handlerFunc HandlerFunc, middlewareFunc ...MiddlewareFunc)

POST POST请求

func (*Engine) PUT

func (group *Engine) PUT(relativePath string, handlerFunc HandlerFunc, middlewareFunc ...MiddlewareFunc)

PUT PUT请求

func (*Engine) Run

func (engine *Engine) Run()

Run 独立使用启动, 在调用前自行绑定路由和控制器

func (*Engine) ServeHTTP

func (engine *Engine) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP

func (*Engine) Use

func (group *Engine) Use(middlewareFunc ...MiddlewareFunc)

Use 添加中间件

type Exception

type Exception struct {
	StateCode int    `json:"stateCode"`
	ErrorCode int    `json:"errorCode"`
	Message   string `json:"message"`
	Error     error  `json:"error"`
}

Exception 统一异常

type FailOption added in v1.0.3

type FailOption struct {
	StatusCode int `json:"statusCode"`
	ErrorCode  int `json:"errorCode"`
}

FailOption 自定义

type FindOneOption

type FindOneOption struct {
	Debug      *bool  // 是否打印sql默认不打印
	DeleteTime string // 软删除字段名
}

type HandlerFunc

type HandlerFunc func(ctx *Context)

HandlerFunc 定义http执行函数类型

type IncrOption

type IncrOption struct {
	Debug      *bool  // 是否打印最终执行的SQL语句,默认不打印
	AutoTime   *bool  // 是否开启自动时间戳,默认不开启
	UpdateTime string // 更新时间字段名,默认 update_time
	AllProtect *bool  // 全量更新保护,默认开启,防止忘记写WHERE条件误更新所有数据
}

type InsertAllOption

type InsertAllOption struct {
	Debug      *bool  // 是否打印最终执行的SQL语句,默认不打印
	AutoTime   *bool  // 是否开启自动时间戳,默认不开启
	CreateTime string // 创建时间字段名,默认 create_time
	UpdateTime string // 更新时间字段名,默认 update_time
}

type InsertOption

type InsertOption struct {
	Debug      *bool  // 是否打印最终执行的SQL语句,默认不打印
	AutoTime   *bool  // 是否开启自动时间戳,默认不开启
	CreateTime string // 创建时间字段名,默认 create_time
	UpdateTime string // 更新时间字段名,默认 update_time
}

type MiddlewareFunc

type MiddlewareFunc func() HandlerFunc

MiddlewareFunc 定义中间件函数类型

type SelectOption

type SelectOption struct {
	Debug      *bool  // 是否打印sql默认不打印
	DeleteTime string // 软删除字段名
}

type Source

type Source struct {
	Link        string
	Debug       bool   // 是否开启全局SQL打印
	CreateTime  string // 创建时间字段名
	UpdateTime  string // 更新时间字段名
	DeleteTime  string // 删除时间字段名
	MaxOpen     int    // 最大打开连接数
	MaxIdle     int    // 最大空闲连接数
	MaxIdleTime int    // 连接在空闲状态下的最大存活时间
	MaxLifeTime int    // 连接的最大生命周期,从创建到被关闭的总时间
}

type SuccessOption added in v1.0.3

type SuccessOption struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
}

SuccessOption 自定义

type UpdateOption

type UpdateOption struct {
	Debug      *bool  // 是否打印最终执行的SQL语句,默认不打印
	AutoTime   *bool  // 是否开启自动时间戳,默认不开启
	UpdateTime string // 更新时间字段名,默认 update_time
	AllProtect *bool  // 全量更新保护,默认开启,防止忘记写WHERE条件误更新所有数据
}

Directories

Path Synopsis
cmd
tg

Jump to

Keyboard shortcuts

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