百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Beego框架使用(beego部署)

ccwgpt 2024-10-10 04:49 37 浏览 0 评论

1.介绍

我们组服务端使用了Beego框架,使用得相对合理,本篇文章简单聊一下我们是如何使用框架的。

大家如果对Beego框架如果不熟悉,可以先看一下这篇文章 https://beego.me/ ,了解如何使用。

2.分析

2.1Beego

1.Beego设置路由的函数为

func Router(rootpath string, c ControllerInterface, mappingMethods ...string) *App {
   BeeApp.Handlers.Add(rootpath, c, mappingMethods...)
   return BeeApp
}

2.mappingMethods这个参数用来设置对应 method 到函数名,定义如下

  • *表示任意的 method 都执行该函数
  • 使用 httpmethod:funcname 格式来展示
  • 多个不同的格式使用 ; 分割
  • 多个 method 对应同一个 funcname,method 之间通过 , 来分割

以下是一个 RESTful 的设计示例:

beego.Router("/api/list",&RestController{},"*:ListFood")beego.Router("/api/create",&RestController{},"post:CreateFood")

3.其中ControllerInterface的结构为:

// ControllerInterface is an interface to uniform all controller handler.
type ControllerInterface interface {
   Init(ct *context.Context, controllerName, actionName string, app interface{})
   Prepare()
   Get()
   Post()
   Delete()
   Put()
   Head()
   Patch()
   Options()
   Finish()
   Render() error
   XSRFToken() string
   CheckXSRFCookie() bool
   HandlerFunc(fn string) bool
   URLMapping()
}

4.同时Beego的Controller实现了ControllerInterface

// Controller defines some basic http request handler operations, such as
// http context, template and view, session and xsrf.
type Controller struct {
   // context data
   Ctx  *context.Context
   Data map[interface{}]interface{}
   // route controller info
   controllerName string
   actionName     string
   methodMapping  map[string]func() //method:routertree
   gotofunc       string
   AppController  interface{}
   // template data
   TplName        string
   ViewPath       string
   Layout         string
   LayoutSections map[string]string // the key is the section name and the value is the template name
   TplPrefix      string
   TplExt         string
   EnableRender   bool
   // xsrf data
   _xsrfToken string
   XSRFExpire int
   EnableXSRF bool
   // session
   CruSession session.Store
}

2.2服务端

1.创建I18nBaseController,组合Beego的Controller,这么做可以导致I18nBaseController实现了Beego的ControllerInterface

type I18nBaseController struct {
   beego.Controller
   // 根据输入解析出来的参数数据,子类主动设置的控制参数
   InputData *i18nhelper.XmInputData
   //I18nController interface
   i18nC I18nControllerInterface
}

I18nBaseController中重点实现了如下函数:

  • Init:初始化数据,并生成i18nC(i18nC, ok := app.(I18nControllerInterface))
  • Prepare:主要处理登录、access/reffer检查等,也会调用i18nC.Setup
  • Exec:用于调用Processfunc (c *I18nBaseController) Exec() {
    defer c.recoverPanic()
    c.i18nC.Process()
    }

2.I18nControllerInterface是接口,所有组合I18nBaseController的类可以重载这些接口

type I18nControllerInterface interface {
   Setup()
   Process()
   Exec()
}

3.使用

1.创建类

type IndexController struct {
   base.I18nBaseController
}
func (c *IndexController) Setup() {
 c.InputData.IsNeedLogin = true //默认不需要登录
}
func (c *IndexController) Process() {
   c.Data["json"] = "rt"
   c.ServeJSON(true)
}
  • 这个类里有I18nBaseController,所以也实现了Beego的ControllerInterface
  • 实现函数Setup和Process,对I18nBaseController里对应的函数实现了重载

2.路由var mappingMethods string = "*:Exec"
beego.Router("/"+applocal+"/accessories", &accessories.IndexController{}, mappingMethods)

  • mappingMethods意味执行IndexController里的Exec函数,即func (c *I18nBaseController) Exec() { defer c.recoverPanic() c.i18nC.Process()}最终执行的是IndexController中的Process

3.Beego框架

  • 以Beego中ServeHTTP为例,会先执行IndexController的Init,然后执行IndexController,最后执行Exec,如此完成了一次请求

总结

本文给大家演示了团队内部是怎样使用Beego框架的,这套使用方案给研发提供了很多灵活性,希望对大家有所帮助。

最后

大家如果喜欢我的文章,可以关注我的公众号(程序员麻辣烫)

往期文章回顾:

算法

  1. 算法学习计划
  2. 蛮力法
  3. 分治法
  4. 减治法

技术

  1. 浅谈微服务
  2. TCP性能优化
  3. 限流实现1
  4. Redis实现分布式锁
  5. Golang源码BUG追查
  6. 事务原子性、一致性、持久性地实现原理
  7. CDN请求过程详解
  8. 记博客服务被压垮的历程
  9. 常用缓存技巧
  10. 如何高效对接第三方支付
  11. Gin框架简洁版
  12. InnoDB锁与事务简析

读书笔记

  1. 敏捷革命
  2. 如何锻炼自己的记忆力
  3. 简单的逻辑学-读后感
  4. 热风-读后感
  5. 论语-读后感

思考

  1. 对项目管理的一些看法
  2. 对产品经理的一些思考
  3. 关于程序员职业发展的思考
  4. 关于代码review的思考
  5. Markdown编辑器推荐-typora

相关推荐

css布局方案汇总(28个实例图文并茂)

简介布局在我们前端日常开发来说是非常重要的,一个好的布局能简化代码的同时还能提高网页的性能。常见的布局方法有浮动(float)布局、绝对定位(position)布局、表格布局(table)、弹性(fl...

十款免费的CSS框架加速Web开发

Pure这是Yahoo最新推出的一款CSS框架,它只有HTML和CSS,没有使用任何JavaScript语言。总大小只有4.4kb,但功能却非常丰富,支持响应式样式和各种导航、表格、表单、按钮、网格和...

Tailwind CSS 是不是目前世上最好的CSS框架?

转载说明:原创不易,未经授权,谢绝任何形式的转载今天看了一篇国外大佬对TailwindCSS的看法,在这里分享给大家,看看大家是否赞同,以下是其相关内容的整理,由于翻译水平有限,欢迎大家讨论和指...

下一代 CSS 框架:Mojo CSS,为何如此受欢迎?

TailwindCSS推出即受到广大开发者的欢迎,当前Githubstar数已达77.8k。它是一个功能类优先(utility-first)的CSS框架,它提供了一系列功能类,让开发者...

常见的几种摄影构图方式

摄影构图,是一种在摄影画面中表现结构美、形式美的方式。构图能让摄影主体更加突出,画面更加有序。所以说,构图在摄影中是非常重要的一个环节。无论是前期构图还是后期构图,摄影者都要对构图有一个比较深的了解。...

风光摄影10大构图技巧,会用构图,照片更容易好看

风光摄影10大构图技巧,会用构图,照片更容易好看先解释一下,为什么会使用构图之后,照片更容易好看?因为,构图是根据很多好看的照片,总结出来的技巧,使用这些构图技巧,就相当于站在了巨人的肩膀上,也就是用...

掌握框式构图的摄影技巧,会让摄影爱好者的作品更有魅力!

很多摄影爱好者都知道摄影构图中有个框式构图,但大多数人对框式构图的摄影技巧,却一知半解。所以摄影爱好者们有必要更全面、深入的了解,并掌握框式构图,会对你摄影水平的提高更有帮助。【欢迎点击上方关注:金立...

这个构图很简洁,但为什么不耐看?

摄影爱好者最常犯的错就是过于复杂、主体不明确,但当遇到简单的场景往往又会出现单调、不耐看的状况。为什么会这样?说白了还是观察力不够。下面是本周的摄影入围习作,我们一起来看看这些照片中主体、陪体以及背景...

初学者需要记牢的八种常用构图法

作者:冯海军摄影中,构图很关键,决定照片是否成功,所以在构图上要加以重视和推敲,虽然说构图无定法,但是也有很多的规律可循,以下列举几种常用构图,会对初学者有很大的帮助。多彩刘卫洲摄苏州姑苏俱乐部(...

构图这件事不难!掌握14种构图模式就稳了

如果说视觉元素是视觉信息的载体,那么构图就是视觉元素的载体。没有适当形式的构图对视觉元素有机、有序地承载,平面设计将无法传达预定的设计意图和视觉信息。因此,对于平面设计而言,构图是平面设计不可或缺的重...

框架构图如何使用?

1分钟教你用手机拍大片。今天我们利用框架构图,在不同的运镜方法下拍摄。·首先将手机贴近地面,拍摄人物走过的画面。·然后利用3D效果的背景衬托,将手机贴近地面,以低角度仰拍人物。·最后我们用高清画质来呈...

面构图的5种超实用的构图形式 前景构图,框架构图,填充构图

面构图的5种超实用的构图形式。为什么有的人拍摄的照片好看又舒适?仔细观察会发现他们善用构图。大家好,今天带大家了解摄影中5种超实用的面构图形式。·一、前景构图。前景是构图中的神奇要素,可以提升照片的表...

一看就懂!跟着马格南的大师学构图

马格南图片社是迄今为止全球最重要的摄影图片社,其网站包涵了太多经典的名字和照片。细细品味这些经典图片,能够学到很多有用的构图手法。跟着大师走,总不会错吧?前后景的运用这似乎是非常常见的一种手法,仔细看...

这才是框架构图,有想法!能给你启发么?

框架构图大家并不陌生,但并不是有一个框就行了。框架构图用得不好,就很死板生硬,给人感觉很假。如果你理解透了,拍出的作品不会单调。今天就给大家分享一下框架构图,你看看有哪些妙用?1.广角与长焦的应用长焦...

7B小模型写好学术论文,新框架告别AI引用幻觉

ScholarCopilot团队投稿量子位|公众号QbitAI学术写作通常需要花费大量精力查询文献引用,而以ChatGPT、GPT-4等为代表的通用大语言模型(LLM)虽然能够生成流畅文本,但...

取消回复欢迎 发表评论: