阅读 196

golang中web框架-路由

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。 在beego框架中,支持四种路由设置,他们分别是:基础路由固定路由正则路由自动路由

  1. 基础路由:

直接通过beego.Get,beego.POST,beego.Head,beego.Delete等方法来进行路由的映射,我们通过代码给大家来进行演示。我们知道,常见的http请求方法操作有:GET,HEAD,PUT,POST,DELETE,OPTIONS等。

  • GET路由 首先是基础的GET路由。下面我们通过例子来向大家进行展示。

    beego.GET("",func) 复制代码

  • POST路由:

    beego.POST("",func) 复制代码

  • 除此之外,还支持Patch,Head,Delete等基础路由。

以上这种请求和对应找到请求方法类型的方式就是RESTful形式,我们最常用的也是RESTful形式 RESTful是目前开发API中非常常用的一种形式,其实就是RESTful形式就是用户是get请求时就自动执行Get方法,Post请求就执行Post方法。

  1. 固定路由:

诸如以下此种代码形式:

beego.Router("/",controller); 复制代码

Get请求就会对应到Get方法,Post就会对应到Post方法,Delete就会对应到Delete方法,Header方法就会对应Header方法。

  1. 正则路由:

正则路由是指可以在进行固定路由的基础上,支持匹配一定格式的正则表达式。比如:id,:username,自定义正则,file的路径和后缀切换以及全匹配等操作。

  1. 自定义路由

上面两种路由都是默认的根据请求的类型,Get就执行Get方法,Post执行Post方法,比较局限。因为在开发的时候大部分都是使用固定匹配想要直接执行对应的逻辑控制方法,因此beego提供给我们了可以自定义的自定义路由配置。方式如下:

beego.Router("/",&IndexController{},"") 复制代码

可以用的HTTP Method:

  • "*":包含以下所有的函数

  • "get":GET 请求

  • "post":POST 请求

  • "put":PUT 请求

  • "delete":DELETE 请求

  • "patch":PATCH 请求

  • "options":OPTIONS 请求

  • "head":HEAD 请求

上面这些对应的请求方法,在beego.Controller中,定义了很多的方法,比如Init,Prepare,Post,Get,Head,Delete等方法。以上分析的是beego框架的Router以及Controller运行逻辑。

  1. 路由组

示例:

func init() { //含义说明https://beego.me/docs/mvc/controller/router.md ns := beego.NewNamespace("/v1", beego.NSRouter("/home", &controllers.UserController{}, "post:GetAll"), //http://localhost:8080/v1/home beego.NSNamespace("/object2", beego.NSRouter("/home2", &controllers.UserController{}, "get:Get"), //http://localhost:8080/v1/object2/home2?uid=asdf ), ) beego.AddNamespace(ns) // 添加日志拦截器 var FilterLog = func(ctx *context.Context) { url, _ := json.Marshal(ctx.Input.Data()["RouterPattern"]) params, _ := json.Marshal(ctx.Request.Form) outputBytes, _ := json.Marshal(ctx.Input.Data()["json"]) divider := " - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -" topDivider := "┌" + divider middleDivider := "├" + divider bottomDivider := "└" + divider outputStr := "\n" + topDivider + "\n│ 请求地址:" + string(url) + "\n" + middleDivider + "\n│ 请求参数:" + string(params) + "\n│ 返回数据:" + string(outputBytes) + "\n" + bottomDivider logs.Info(outputStr) } // 最后一个参数必须设置为false 不然无法打印数据 //以下配置http://localhost:8080/v1/home则不会输出日志,http://localhost:8080/v1/object2/home2这个地址会输出日志 beego.InsertFilter("*/home2", beego.FinishRouter, FilterLog, false) }


作者:我是大明哥
链接:https://juejin.cn/post/7016985070124826654


文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐