goboot

package module
v1.0.5 Latest Latest
Warning

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

Go to latest
Published: Jan 16, 2026 License: Apache-2.0 Imports: 15 Imported by: 0

README

goboot

介绍

goboot 是一个基于 Golang 的 Web 开发框架。提供类java springboot的开发体验。

安装教程

  1. 在go.mod文件中添加 require gitee.com/rainsuperman/goboot v最新版本。或者使用 go get 安装框架:

    go get -u gitee.com/rainsuperman/goboot
    
  2. 在项目中导入框架并开始开发:

    import "gitee.com/rainsuperman/goboot"
    

使用说明

最简单示例

最简单的main.go示例

package main

 import (
 	"fmt"
 	"log"
 	"os"
 	"gitee.com/rainsuperman/goboot"
 )
 
 
 func main() {
 
 	if len(os.Args) > 1 && os.Args[1] == "init" {
 		goboot.AutoCode("该项目的moduleName")
 		return
 	}

 	//goboot.AddWebUrlAspect(&aspect.LogAspect{})//goboot的切面功能,后续详解
 	//goboot.AddWebUrlAspect(&aspect.LoginAspect{})//goboot的切面功能,后续详解
 	fmt.Println("监听端口: " + port)
 
 	goboot.ListenAndServe(":"+18888, nil)
 }

写controller

搜索
  1. 定义控制器:实现 RestController 接口,定义处理 HTTP 请求的方法。

    type MyController struct{}
    
    func (c *MyController) Handle(w http.ResponseWriter, r *http.Request) {
        // 处理逻辑
    }
    
  2. 注册控制器:使用 AddRestController 方法将控制器注册到框架中。

    goboot.AddRestController("mycontroller", "MyController", &MyController{})
    
  3. 启动服务:使用 ListenAndServeListenAndServeWithConfig 启动 HTTP 服务。

    goboot.ListenAndServe(":8080", nil)
    
  4. 自动生成代码:使用 AutoCodeAutoCodeWithConfig 方法根据配置自动生成控制器代码。

    goboot.AutoCode("mymodule")
    
  5. 生成接口文档:使用 initWebDocMethods 生成接口文档信息。

    goboot.initWebDocMethods(false)
    

Documentation

Index

Constants

This section is empty.

Variables

View Source
var WebUrlAspectList []WebUrlAspect

Functions

func AddCronSchedule added in v1.0.3

func AddCronSchedule(schedule any)

添加CronSchedule

func AddRestController

func AddRestController(packageName string, structName string, controller RestController)

添加RestController

func AddWebUrlAspect

func AddWebUrlAspect(aspect WebUrlAspect)

添加切面Aspect

func AutoCode

func AutoCode(moduleName string)

自动代码生成 生成文件包含路由信息,文档信息 需要源代码运行

func AutoCodeWithConfig

func AutoCodeWithConfig(aotoGoFileName string, gobootWebUrlJson string, moduleName string)

扫描路径,生成aotoCode文件 文件包含路由信息,文档信息

func ListenAndServe

func ListenAndServe(addr string, handler http.Handler) error

监听并服务

func ListenAndServeWithConfig

func ListenAndServeWithConfig(addr string, config ServerConfig, handler http.Handler) error

Types

type OriStruct

type OriStruct struct {
	StructName      string           `json:"structName"`      //结构体名称
	PackageName     string           `json:"packageName"`     //包名称
	FullPackageName string           `json:"fullPackageName"` //包名称
	CommentStr      string           `json:"commentStr"`      //注释
	PackageImports  []string         `json:"packageImports"`  //导入的包
	FiledList       []OriStructFiled `json:"filedList"`       //字段列表
}

OriStruct 原始结构体

func GetOriStructList

func GetOriStructList() []OriStruct

获取原始结构体列表

type OriStructFiled

type OriStructFiled struct {
	CommentStr string `json:"commentStr"` //注释
	Name       string `json:"name"`       //参数名称
	TypeName   string `json:"typeName"`   //参数类型名称
	TagStr     string `json:"tagStr"`     //标签
}

OriStructFiled 原始结构体字段

type OriStructMethod

type OriStructMethod struct {
	PackageName                 string                 `json:"packageName"`                 //包名称
	Name                        string                 `json:"name"`                        //方法名称
	CommentStr                  string                 `json:"commentStr"`                  //注释
	BelongStructName            string                 `json:"belongStructName"`            //所属结构体名称
	BelongStructFullPackageName string                 `json:"belongStructFullPackageName"` //所属结构体名称
	ParamList                   []oriStructMethodParam `json:"paramList"`                   //参数列表
	PackageImports              []string               `json:"packageImports"`              //导入的包
}

OriStructMethod 原始结构体方法

func GetOriMethodList

func GetOriMethodList() []OriStructMethod

获取原始方法列表

type RestController

type RestController interface {
	GoBootBaseUrl() string // 控制器的基础路径可以为/根路径
}

RestController 接口 所有的自动RestController都需要实现这个接口

type ServerConfig

type ServerConfig struct {
	StaticFileDir    *string                                               // 静态文件目录
	GobootWebUrlJson string                                                // 路由json文件路径
	HandleReturn     func(w http.ResponseWriter, retObj any, retErr error) // 返回处理函数,系统提供了默认的返回处理,可自定义修改
	HandleDoSche     func(string) bool                                     //实时判断本系统是否要处理定时任务
}

type WebDocMethod

type WebDocMethod struct {
	UrlPath               string              `json:"urlPath"`               //url路径
	WebMethod             string              `json:"webMethod"`             //http方法
	Name                  string              `json:"name"`                  //名称
	MethodName            string              `json:"methodName"`            //方法名称
	StructName            string              `json:"structName"`            //结构体名称
	StructFullPackageName string              `json:"structFullPackageName"` //带module的包名
	PackageName           string              `json:"packageName"`           //包名称
	ParamList             []WebDocMethodParam `json:"paramList"`             //参数列表
	PathParams            []string            `json:"pathParams"`            //路径参数列表

	CommentAspectList []string `json:"aspectList"`       //切面列表
	CommentName       string   `json:"commentName"`      //注释名称
	CommentDesc       string   `json:"commentDesc"`      //注释描述
	CommentGroupName  string   `json:"commentGroupName"` //注释分类
	CommentTime       int64    `json:"commentTime"`      //注释时间
	CommentBackStr    string   `json:"commentBackStr"`   //注释返回值
	// contains filtered or unexported fields
}

文档对象

func GetWebDocMethodList

func GetWebDocMethodList() []*WebDocMethod

获取所有的WebDocMethod

type WebDocMethodParam

type WebDocMethodParam struct {
	Name     string `json:"name"`     //参数名称
	TypeName string `json:"typeName"` //参数类型名称
	DescStr  string `json:"descStr"`  //参数描述
	LikeStr  string `json:"likeStr"`  //参数示例
	DefStr   string `json:"defStr"`   //参数默认值
}

type WebUrlAspect

type WebUrlAspect interface {
	//匹配切面,可以根据webDocMethod匹配是否需要执行该切面
	MathchAspect(webDocMethod *WebDocMethod) bool
	//执行切面逻辑先于controller
	//r为http请求
	//paramMap为请求参数,可修改,可添加,可删除。
	DoAspect(r *http.Request, paramMap *map[string][]any) error
	//执行切面逻辑后于controller
	//returnValue为返回数据
	//reRrr为返回的错误信息
	DoAspectAfter(returnValue any, reRrr error)
}

接口切面

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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