7.beego的controller模块的路由

7.beego的controller模块的路由

文章目录

  • 7.beego的controller模块的路由
    • 有三种路由:**固定路由、正则路由、自动路由**
    • 固定路由:
    • 正则路由:
    • 自动路由:
    • 自定义路由:
    • beego路由用法举例:
    • 判断请求的方法:
    • 终止逻辑:比如用户认证不通过时

有三种路由:固定路由、正则路由、自动路由

固定路由:

  • 一个固定的路由,一个控制器,然后根据用户请求方法不同请求控制器中对应的方法

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

    • beego.Router("/hello", &controllers_user.Hello{})
  • 然后根据请求的方法,比如get请求,去对应的controller里找对应的方法

    	//1.固定路由
    	//http://127.0.0.1:8080/test_router
    	beego.Router("/test_router",&controllers.RouterController{})
    

正则路由:

  • beego.Router(“/api/?:id”, &controllers.RController{})

    • 默认匹配 //例如对于URL”/api/123”可以匹配成功,此时变量”:id”值为”123”
  • beego.Router(“/api/:id”, &controllers.RController{})

    • 默认匹配 //例如对于URL”/api/123”可以匹配成功,此时变量”:id”值为”123”,但URL”/api/“匹配失败
  • :id([0-9]+) 或者 :id([\d]+) 或者 int

  • :id([\w]+) 或者 :username:string ** \需要转义**

  • 获取:

    • this.Ctx.Input.Param(":id")

    • this…GetString(":id")

  • 正则部分:

    • . 匹配除换行符以外的任意字符

    • \w 匹配字母或数字或下划线 等价于 ‘[^A-Za-z0-9_]’。

    • \d 匹配数字

        //2.正则路由
    	//http://127.0.0.1:8080/test_router/11234
    	beego.Router("/test_router/?:id:int",&controllers.RouterController{})
    

自动路由:

  • 注册路由的时候不需要指定url,只需要注册控制器即可:

    • beego.AutoRouter(&controllers.UserController{})
  • 使用的时候得按规则来

    • /控制器名/方法名/后面的都是参数。。。
  • /user/get/123/456 会访问UserController下的get方法,两个参数是123,456

    • TestUserController – > testuser
    	//3.自动路由
    	//http://127.0.0.1:8080/router/get
    	beego.AutoRouter(&controllers.RouterController{})
    

自定义路由:

  • 注册路由的时候可以指定第三个参数,这个参数就是用来自定义路由的

    * 用法:        method :函数名
    
    • post:Login post请求的时候访问Login函数

    • get:User get请求的时候访问User函数

    • *:LoginOut 所有的请求方法都访问LoginOut函数

    • put:UpdateFile put请求的时候访问UpdateFile函数

    • get,post:Login get和post请求的时候访问Login函数

    • 可用的 HTTP Method:

      *: 包含以下所有的函数

      get: GET 请求

      post: POST 请求

      put: PUT 请求

      delete: DELETE 请求

      patch: PATCH 请求

      options: OPTIONS 请求

      head: HEAD 请求

      	//4.自定义路由
      	//http://127.0.0.1:8080/test_router/1234
      	//beego.Router("/test_router/:id:int", &controllers.RouterController{}, "get,post:Get") //"*:请求函数" 所以请求
      	beego.Router("/test_router", &controllers.RouterController{}, "get,post:Get") //"*:请求函数" 所以请求
      

beego路由用法举例:

  • 默认的get请求对应Get方法,post请求对应Post方法

  • beego.Router("/", &controllers.MainController{})

  • 给请求指定自定义方法,默认方法将失效

  • beego.Router("/login", &controllers.MyController{}, “get:Login;post:Register”)

  • 多个请求访问一个方法

  • beego.Router("/getandpost", &controllers.MyController{}, “get,post:Login”)

  • 所有请求访问一个方法

  • beego.Router("/all", &controllers.MyController{}, “*:Login”)

判断请求的方法:

if h.Ctx.Request.Method == "POST"{
    ...

}

终止逻辑:比如用户认证不通过时

this.StopRun()
	//id := u.GetString(":id")
	//fmt.Println(id)

	//1.回去访问方式
	if u.Ctx.Request.Method == "POST" {
		//停止不再执行
		//u.StopRun()
		u.TplName = "test_router_post.html"
	}else if u.Ctx.Request.Method == "GET"  {
		u.TplName = "test_router.html"
	}

你可能感兴趣的:(go语言Beego)