【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,一经查实,立即删除!

相关文章

数据库基础知识——视图

视图 含义:理解成一张虚拟的表 视图和表的区别: 使用方式占用物理空间视图完全相同 不占用,仅仅保存的是sql逻辑表完全相同 占用 视图的好处: 1、sql语句提高重用性,效率高 2、和表实现了分离,提高了安…

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

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

完全背包

题目描述 即0-1背包,把每个物品只能拿一次改为能拿无数次。 思路 //这个位置的状态是不拿,第一次拿,和第n>1次拿 dp[i][j]max(max(dp[i-1][j],dp[i-1][j-v[i]]w[i]),dp[i][j-v[i]]); 拿0次:dp[i-1][j]; 拿1次:dp[i-…

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

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

数据库基础知识——变量

1.系统变量 1.1 全局变量 作用域:针对于所有会话(连接)有效,但不能跨重启 查看所有全局变量 SHOW GLOBAL VARIABLES;查看满足条件的部分系统变量 SHOW GLOBAL VARIABLES LIKE %char%;查看指定的系统变量的值 SELECT global.aut…

防止ARP欺骗

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

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

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

数据库基础知识——存储过程和函数

文章目录1.存储过程1.1 创建存储过程1.2 调用存储过程1.3 删除存储过程1.4 查看存储过程2.函数2.1 创建函数2.2 调用函数2.3 函数的删除和查看2.4 函数和存储过程的区别1.存储过程 含义:一组经过预先编译的sql语句的集合 好处: 1、提高了sql语句的重用…

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

来源:数学建模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乍一看,机…

Bing每日壁纸API分享

CSS中设置背景图片 可以使用此API直接在CSS中设置背景图片: background-image: url(https://bing.biturl.top/?resolution1920&formatimage&index0&mktzh-CN); background-size: 100%; background-repeat: no-repeat;演示地址:http://my.mojxtang.com/…

数据库基础知识——流程控制结构

文章目录1.分支1.1 if函数1.2 case语句1.3 if elseif语句2. 循环1.分支 1.1 if函数 语法:if(条件,值1,值2) 特点:可以用在任何位置1.2 case语句 语法: 情况一:类似于switch case 表达式 when 值1 then …

搭建Java开发环境及相关工具

1、JDK安装及环境配置 此处安装JDK1.8的版本,官方下载地址: https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 选择window64位的,具体的安装步骤和环境配置可参考: https://blog.csdn.net/…

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

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

数据库高级知识——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有点与众不同,它的架构可以在多种不同场景中…

Linux或者Mac解压乱码问题

1、unar : 命令行解压工具 2、安装: ubuntu等Linux安装方法:sudo apt install unar mac系统安装方法:brew install unar 现在mac电脑用 The Unarchiver 解压也不会出现乱码 3、使用方法:unar filename.zip 转载于:https://www.cnb…

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

来源: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程序设计基础。在学习过程中遇到了一些习题,我根据自己的理解和思路写了一些代码实现,算是对自己学习过程的一个记录,也希望可以对别人有些许帮助。 题目描述 输入描述…