关于go:基于gin框架根据文件目录层级和文件名自动生成路由

6次阅读

共计 2393 个字符,预计需要花费 6 分钟才能阅读完成。

本节次要介绍如何新增一个接口及接口命名规定,比方新增一个增加文章分类(在 cate.go 间接增加一个 func 函数 - 单个接口)、和新增一个文章评论的性能(新增加一个.go 文件多个接口),咱们用两个例子阐明这个中状况开发。
接口命名规定

1.GET 申请命名

当接口以 Get 结尾命名,比方 GetList、GetData、Get_list、Get 时候就路由就把它注册成 get 申请。

2.DELETE 申请命名

当接口以 Del 结尾命名,比方 DelArticle、DelData、Del 时候就路由就把它注册成 delete 申请。

3.PUT 申请命名

当接口以 Put 结尾命名,比方 PutArticle、PutData、Put 时候就路由就把它注册成 put 申请。

4.GetPost 申请命名

当接口以 GetPost 结尾命名,比方 GetPostArticle、GetPostData、GetPost 时候就路由就把它注册成 2 个申请形式门路,一个是 get 申请、一个是 post 申请,这种命名形式是为了接口能同时满足 get 和 post 申请,比方在微信公众号接管服务接口,它在验证无效是 get 申请、推送数据时是 post 申请。

5. 默认是 Post 申请

除去以上 Get、Del、Put、GetPost 结尾命名形式以外命名,零碎将默认注册成 Post 申请形式。例如:Save、Status、DoMore、OnLink、Update 等等都是 Post 申请。

6. 特地阐明

因为 go 语言规定,为了能让其余 package 调用办法,所以首字母必须大写,然而接口为了满足驼峰命名规定,增加到路由上的地址时把命名的办法首字母改为小写,例如 GetList 变成 getList、DelArticle 变成 delArticle、PutArticle 变成 putArticle、GetPostArticle 变成 getPostArticle、Save 变成 save 等。
已有文件增加接口
当初 app\business\article\cate.go 下存在 cate.go 文件,当初原有文件里增加 Save 来保留增加文章分类数据,代码如下:

package article

import ("gofly/utils/gf")

type Cate struct{}

// 文章分类
func init() {fpath := Cate{}
    gf.Register(&fpath, fpath)
}


// 保留数据
func (api *Cate) Save(c *gf.GinCtx) {param, _ := gf.RequestParam(c)
    dara, err := gf.Model("gf_article_cate").Save(param)
    if err != nil {gf.Failed().SetMsg("保留失败").SetData(err).Regin(c)
    } else {gf.Success().SetMsg("保留胜利").SetData(dara).Regin(c)
    }
}

这样就胜利增加了 save 接口,就能够用 http://127.0.0.1:8110/business/article/cate/save 提交数据了,如下:

新增 go 文件增加接口 1. 在 app/business/article 新建文件 comment.go。新增文件中增加 int 函数引入路由,包名(package)为 article,并用文件名 comment 作为路由名,代码如下:

package article

// 文章评论
import ("gofly/utils/gf")

// 路由标识要与文件名雷同
type Comment struct{}

func init() {fpath := Comment{}
    gf.Register(&fpath, fpath)
}

其中 type Comment struct{} 和 fpath := Comment{} 中的 Comment 就是评论路由文件名,前面新增其余文件改成对应文件名称。
2. 增加接口,增加获取评论列表和保留评论两个接口,别离命名为:GetList 和 Save 代码如下:

package article

// 文章评论
import ("gofly/utils/gf")

// 路由标识要与文件名雷同
type Comment struct{}

func init() {fpath := Comment{}
    gf.Register(&fpath, fpath)
}

// 获取数据列表
func (api *Comment) GetList(c *gf.GinCtx) {param, _ := gf.RequestParam(c)
    list, err := gf.Model("gf_article_comment").Where("article_id", param["id"]).Fields("id,name").Select()
    if err != nil {gf.Failed().SetMsg("谬误").SetData(err).Regin(c)
    } else {gf.Success().SetMsg("申请胜利").SetData(list).Regin(c)
    }
}

// 保留数据
func (api *Comment) Save(c *gf.GinCtx) {param, _ := gf.RequestParam(c)
    dara, err := gf.Model("gf_article_comment").Save(param)
    if err != nil {gf.Failed().SetMsg("保留失败").SetData(err).Regin(c)
    } else {gf.Success().SetMsg("保留胜利").SetData(dara).Regin(c)
    }
}

留神:函数前加 (api Comment) 其中 Comment 是 type Comment struct{} 中 Comment,前面新增其余文件改成对应文件名。
到此新增文件及接口实现,在终端就看到新增路由了,如下图:

正文完
 0