Skip to content

使用go-fiber和ent的go web单体应用开发模板项目

License

Notifications You must be signed in to change notification settings

wnnce/go-fiber-ent-web-layout

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go-fiber-ent-web-layout GoWeb应用快速开发模板项目

使用go-fiberWeb框架和entORM框架,集成了wire依赖注入和yaml配置文件读取,文件目录参照bilibili开源的go-kratos微服务开发框架

项目简介

此模板项目主要面向Golang单体项目后端开发,数据交互均使用json格式,集成了错误处理,panic捕获、通用返回消息、权限验证、依赖注入、配置文件读取等大部分创建项目时需要重复使用的代码。

使用到的工具

  • go-fiber:Go最快的web开发框架
  • ent:facebook开源的ORM框架
  • golang-jwt:JWTGo实现
  • sonic:字节跳动开源的序列化工具
  • yaml:读取.yaml配置文件
  • validator:结构体参数验证

通用返回消息

// /cmd/internal/tools/res.go

type Result struct {
	Code      int         `json:"code,omitempty"`
	Message   string      `json:"message,omitempty"`
	Timestamp int64       `json:"timestamp,omitempty"`
	Data      interface{} `json:"data,omitempty"`
}

错误处理

// /cmd/internal/tools/tools.go

func CustomErrorHandler(ctx *fiber.Ctx, err error) error {
	code, message := http.StatusInternalServerError, "server error"
	var e *fiber.Error
	if errors.As(err, &e) {
		code = e.Code
		message = e.Message
	}
	result := Fail(code, message)
	return ctx.Status(code).JSON(result)
}

依赖注入

// /cmd/go-fiber-ent-web-layout

func wireApp(*conf.Data, *conf.Jwt) (*fiber.App, func(), error) {
	panic(wire.Build(api.InjectSet, data.InjectSet, service.InjectSet, common.InjectSet, middlewares.NewAuthMiddleware, newApp))
}

快速开始

在使用此模板之前,请确保golang版本大于等于1.21并且已经启用了go mod管理依赖

Clone此项目

git clone https://github.com/wnnce/go-fiber-ent-web-layout.git

获取依赖

cd go-fiber-ent-web-layout

go mod tidy

安装entwire工具

go install entgo.io/ent/cmd/ent@latest

go install github.com/google/wire/cmd/wire@latest

生成依赖注入代码

go generate ./cmd/go-fiber-ent-web-layou/

编译项目,配置文件不会被打包,运行二进制文件时可以使用 -conf 参数指定配置文件路径

go build .\cmd\go-fiber-ent-web-layout\ 

# 打包完成后运行 需要指定配置文件路径
./go-fiber-ent-web-layout.exe -conf .\config.yaml

如果需要添加实体类或数据表可以参考ent框架的文档

About

使用go-fiber和ent的go web单体应用开发模板项目

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages