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

huanglishi · · 660 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

本节主要介绍如何新增一个接口及接口命名规则,比如新增一个添加文章分类(在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来保存添加文章分类数据,代码如下: ```golang 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 提交数据了,如下: ![04_tiny.png](https://static.golangjob.cn/240227/ebb73d8a217e168b9bd570afd2b70b5c.png) 新增go文件添加接口1.在app/business/article新建文件comment.go。新增文件中添加int函数引入路由,包名(package)为article,并用文件名comment作为路由名,代码如下: ```golang 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 代码如下: ```golang 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 ,后面新增其他文件改成对应文件名。 到此新增文件及接口完成,在终端就看到新增路由了,如下图: ![get_image.png](https://static.golangjob.cn/240227/c7f4b0e9a5963266df5703ea15b9d5d9.png) [GoFly全栈开发社区-Go快速开发后台系统框架](https://goflys.cn/home)

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

660 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传