欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2024/7/5 编程问答 25 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【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

总结

以上是生活随笔为你收集整理的【GoWeb开发实战】Beego的路由控制的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。