【GoWeb开发实战】Beego的路由控制

Beego的路由控制

二、路由控制

web框架中,路由是重要的一环,对于beego的路由配置如何?

2.1 默认路由

让我们从入口文件main.go先分析起来吧:

package mainimport (_ "beegoDemo/routers""github.com/astaxie/beego"
)func main() {beego.Run()
}

我们看到 main 函数是入口函数,但是我们知道 Go 的执行过程是如下图所示的方式:

 

 这里我们就看到了我们引入了一个包 _ "beegoDemo/routers",这个包只引入执行了里面的 init 函数,那么让我们看看这个里面做了什么事情:

package routersimport ("beegoDemo/controllers""github.com/astaxie/beego"
)func init() {beego.Router("/", &controllers.MainController{})
}

路由包里面我们看到执行了路由注册 beego.Router, 这个函数的功能是映射 URL 到 controller,第一个参数是 URL (用户请求的地址),这里我们注册的是 /,也就是我们访问的不带任何参数的 URL,第二个参数是对应的 Controller,也就是我们即将把请求分发到那个控制器来执行相应的逻辑,我们可以执行类似的方式注册如下路由:

beego.Router("/user", &controllers.UserController{})

看一下这个Router 的源码:

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

我们beego的路由控制在router/router.go这个代码文件控制的,我们在init这个函数根据自己需求来更改路由规则了。

2.2 基础路由

beego 存在三种方式的路由:固定路由、正则路由、自动路由。

从 beego 1.2 版本开始支持了基本的 RESTful 函数式路由,应用中的大多数路由都会定义在 routers/router.go 文件中。最简单的 beego 路由由 URI 和闭包函数组成。

2.2.1 基本 GET 路由

beego.Get("/",func(ctx *context.Context){ctx.Output.Body([]byte("hello world"))
})

2.2.2 基本 POST 路由

beego.Post("/alice",func(ctx *context.Context){ctx.Output.Body([]byte("wangergou"))
})

2.2.3 注册一个可以响应任何 HTTP 的路由

beego.Any("/foo",func(ctx *context.Context){ctx.Output.Body([]byte("ruby"))
})

2.2.4 所有的支持的基础函数如下所示

beego.Get(router, beego.FilterFunc)
beego.Post(router, beego.FilterFunc)
beego.Put(router, beego.FilterFunc)
beego.Patch(router, beego.FilterFunc)
beego.Head(router, beego.FilterFunc)
beego.Options(router, beego.FilterFunc)
beego.Delete(router, beego.FilterFunc)
beego.Any(router, beego.FilterFunc)

2.2.5 支持自定义的 handler 实现

有些时候我们已经实现了一些 rpc 的应用,但是想要集成到 beego 中,或者其他的 httpserver 应用,集成到 beego 中来。现在可以很方便的集成:

s := rpc.NewServer()
s.RegisterCodec(json.NewCodec(), "application/json")
s.RegisterService(new(HelloService), "")
beego.Handler("/rpc", s)

beego.Handler(router, http.Handler) 这个函数是关键,第一个参数表示路由 URI,第二个就是你自己实现的 http.Handler,注册之后就会把所有 rpc 作为前缀的请求分发到 http.Handler 中进行处理。

这个函数其实还有第三个参数就是是否是前缀匹配,默认是 false,如果设置了 true,那么就会在路由匹配的时候前缀匹配,即 /rpc/user 这样的也会匹配去运行。

转载于:https://www.cnblogs.com/Paul-watermelon/articles/11031703.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

挑战唯物论?诺奖得主彭罗斯:意识产生可能是大脑内的「量子叠加」的结果...

来源:新智元量子物理学取得了巨大成功,但其解释仍然不确定。大脑由神经元组成,而神经元又由分子组成,很可能会受到量子效应的影响。量子力学和神经科学能否融合成「量子意识」理论?「我们是谁」?恐怕没有什…

下一个是什么?2022年值得关注的22项新兴技术

来源:参考消息网英国《经济学人》网站11月8日发表题为《下一个是什么?2022年值得关注的22项新兴技术》的文章。在文章列举的22项新技术中,既有今年大热的“元宇宙”、太空旅游、脑机接口,也有备受期待的量子计算、艾滋病病毒疫苗……

防止ARP欺骗

前言: 曾经因为宿舍里面的同学经常熬夜打游戏,好言相劝不管用,无奈之下使用arp欺骗他们的主机,使之晚上11点之后游戏延迟,掉线,最后,一到11点同学们就都上床睡觉了。 防止arp欺骗的三种思路&…

孙文智/胡霁/汪小京团队揭示延迟满足的神经基础

来源:北京脑编辑:绿萝导语:20 世纪 60-70 年代,斯坦福大学心理学家瓦尔特•米舍尔团队进行了一系列有关自制力的心理学实验,其中包括著名的棉花糖实验,得出结论:「能为偏爱的奖励坚持忍耐更长时…

为什么数学家、统计学家和机器学习专家会用不同方式解决问题?

来源:数学建模andMATLAB原文作者:Nir Kaldero翻译:Fibears原文链接: http://www.galvanize.com/blog/2015/08/26/why-a-mathematician-statistician-machine-learner-solve-the-same-problem-differently-2/#.VeUQMNOqoVU乍一看,机…

眼耳鼻舌身意,严肃地聊一聊元宇宙的“技术拼图”

来源:脑极体元宇宙太太太火了,以至于还没来得及认真聊一聊技术本身,各种炒房团、割韭菜、融资潮、付费课……就纷至沓来,我看不懂但大受震撼。吃多了瓜,颇有一种“累了毁灭吧”的虚无感。不过,元宇宙的技术…

数据库高级知识——mysql架构介绍(一)

文章目录1.MySQL简介1.1 概述1.2 Mysql高级2.Mysql Linux版的安装2.1 MySQL下载官网2.2 安装与卸载2.3 查看MySQL安装版本2.4 mysql服务的启停2.5 登录mysql2.6 设置开机自启动2.7 MySQL相关文件2.8 修改字符集3.Mysql配置文件3.1二进制日志log-bin3.2 错误日志log-error3.3 慢…

美国大胆预测:未来300年的人类竟然是这样的!

来源:云犀科技编辑:小艾 关于未来,人们越来越向往300年后人类社会的发展又会是什么样子呢?对于未来,大家又是怎么预测的呢?▼5年后▼三维全息虚拟技术正式大规模商用,可以通过VR、AR技术进行远程…

数据库高级知识——mysql架构介绍(二)

文章目录1.Mysql逻辑架构介绍1.1 总体概览1.2 查询说明2.Mysql存储引擎2.1 查看命令2.2 各个引擎简介2.3 MyISAM和InnoDB2.4 阿里巴巴、淘宝用哪个1.Mysql逻辑架构介绍 1.1 总体概览 和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中…

联邦学习应用思考:需求还是方法?

来源:AI数据派前言:目前,“联邦学习”这个术语在市场上存在很多认识上的误解和混淆,主要原因是其既在广义上表达了保护数据前提下联合多方数据训练模型的需求,又在狭义上表示了一类通过暴露部分数据信息来提升训练性能…

数据库高级知识——索引优化分析(一)

文章目录1.SQL性能下降原因2.常见通用的Join查询2.1 SQL执行顺序2.2 Join图3.索引简介3.1 索引是什么3.2 索引优势3.3 索引劣势3.4 索引分类3.5 mysql索引结构3.6 哪些情况需要创建索引3.7 哪些情况不要创建索引1.SQL性能下降原因 查询数据过多 能不能拆,条件过滤…

使用C++代码打印数字正方形

使用C代码打印数字正方形 作为一名初学者,最近在跟着网课学习C程序设计基础。在学习过程中遇到了一些习题,我根据自己的理解和思路写了一些代码实现,算是对自己学习过程的一个记录,也希望可以对别人有些许帮助。 题目描述 输入描述…

PNAS:大脑一思考,就不再对称也不再平衡

来源: 集智俱乐部作者:郭瑞东 审校:张澳 编辑:邓一雪 导语生命系统的各种功能,从精神层面的思考,到物理层面的运动,都会消耗能量并产生熵,打破原有的平衡。但不同的认知或物理活动&…

数据库高级知识——索引优化分析(二)

文章目录4.性能分析4.1 MySQL常见瓶颈4.2 Explain5.查询优化5.1 索引失效5.2 索引优化4.性能分析 4.1 MySQL常见瓶颈 CPU :SQL中对大量数据进行比较、关联、排序、分组 IO:实例内存满足不了缓存数据或排序等需要,导致产生大量 物理 IO。查询执行效率低…

《经济学人》:2022年值得关注的22项新兴技术

来源:参考消息网英国《经济学人》网站11月8日发表题为《下一个是什么?2022年值得关注的22项新兴技术》的文章。在文章列举的22项新技术中,既有今年大热的“元宇宙”、太空旅游、脑机接口,也有备受期待的量子计算、艾滋病病毒疫苗……

郭瑞东 | 如何制造更聪明的人工智能?让人工生命在复杂环境中进化

来源:集智俱乐部作者:郭瑞东我们都知道大脑是控制身体的中枢,或者夸张点说,身体只是大脑的傀儡。然而事实果真如此吗?认知科学指出,人类并不总是“先知后行”,很多时候也会“先行后知”,身体在塑造精神方面…

行业观察 | 机器人Ameca挣脱「灵魂」枷锁觉醒?

来源:新智元编辑:小咸鱼 桃子或许你根本不敢想像机器人真正苏醒时的样子。活动肩骨后,突然间灵魂附体,大梦初醒般睁开双眼。先是紧皱眉头,后是做出惊讶不已的表情,让人不得不惊呼《西部世界》来了...「我是…

数据结构与算法——二分查找与二叉排序树

文章目录1.预备知识1.1 题目目录1.2 二分查找1.3 递归二分查找1.4 循环二分查找1.5 二叉查找(排序)树1.6 二叉搜索树的代码实现2.搜索插入位置2.1 题目描述2.2 C代码实现3.区间查找3.1 题目描述3.2 算法思路3.3 C代码实现4.旋转数组查找4.1 题目描述4.2 …

Django-C001-快速入门

此文章完成度【100%】留着以后忘记的回顾。多写多练多思考,我会努力写出有意思的demo,如果知识点有错误、误导,欢迎大家在评论处写下你的感想或者纠错。 Django Django是一个开放源码的Web应用框架,由Python写成,采用M…

Nature子刊:吃得越少,活得越久

来源:六六脑我们如何才能在年老体迈时保持健康和尽可能延长寿命?现在,研究衰老的科学家们已经给出了简单的答案:少吃点儿!常言道,千金难买老来瘦。的确,经验与科学实验都告诉我们,成…