微前端架构如何改变企业的开发模式与效率提升
1098
2022-10-25
gin-restful- 基于 gin 的 restful api 开发框架
# gin http restful项目生成# 快速入门 go version > 1.2(应用go mod) git clone https://github.com/go-libraries/gin-restful cd gin-restful chmod +x ./build.sh $GOBIN/createGinProject -package=项目名 -path=项目路径# 生成项目基本结构```go-base 基础文件-config config.ini-handlers http处理回调-logs 日志文件目录-models 模型文件-processes 可以理解为控制器对象-routers 路由文件go.modmain.goReadme.md```# 参数详解```goUsage of createMangoProject: -dsn string connection info names dsn -h this help -help this help -package string package name use all project -path string project build in this path -port string port```# 二次开发详解## 控制器1. 可以在services中书写新的控制器```gotype UserSaveService struct { base.Controller Account *UserSaveRequest}func (u *UserSaveService) Decode() base.IError { // 解析 输入字段 如下 u.Account = &UserSaveRequest{&models.UserAccount{}, ""} if bt, err := u.Ctx.GetRawData(); err == nil { if err := json.Unmarshal(bt, u.Account); err != nil { return base.NewError(err) } } else { return base.NewError(err) } return nil}func (u *UserSaveService) Process() base.IError { //todo:执行业务过程 return nil}```2. 可以在controllers中注入执行方法```gofunc SaveUser(c *gin.Context) { p := &base.Controller{} p.ServiceFun = func(u *base.DefaultService) base.IError { u.Data = "hello world" return nil } base.RunService(p, c)}```## 路由路由可以开发二次中间件功能```gopackage routersimport ( "github.com/gin-gonic/gin" "time" "{{package}}/base")type Route struct { Name string Method string Path string HandlerFunc gin.HandlerFunc}func calTime(fn func(c *gin.Context)) func(c *gin.Context) { return func(c *gin.Context) { start := time.Now() fn(c) base.Log.Printf("Done in %v (%s %s)\n", time.Since(start), c.Request.Method, c.Request.URL.Path) }}func init() { //Router.GET("/", func(c *gin.Context) { // time.Sleep(5 * time.Second) // c.String(http.StatusOK, "Welcome Gin Server") //}) for _, route := range getUserRoutes() { handle := calTime(route.HandlerFunc) base.Gin.Handle(route.Method, route.Path, handle) } //todo: add other Routes}```## 模型默认使用gorm作为数据驱动,如果初始化--dsn项目不为空,会自动将该db下表生成模型并提供基础方法外部库详见 [外部库-模型生成器](https://github.com/go-libraries/genModels)## 文档文档使用swagger进行配置,可以一键生成详见
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~