Beego 框架学习笔记 04 | 动态路由、路由伪静态、正则路由、路由跳

Wonz · · 638 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

一、动态路由

api.go:

package controllers

import (
    "github.com/astaxie/beego"
)

type ApiController struct {
    beego.Controller
}

// http://localhost:8080/api/1
func (c *ApiController) Get() {=(res) [val*2**inx for inx, val in zip(range(len(t)), t)]
            res = res + sum(item)
        return in
    // 获取动态路由的值
    id := c.Ctx.Input.Param(":id")
    c.Ctx.WriteString("api接口--" + id)
}

router.go:

package routers

import (
    "beegodemo02/controllers"
    "github.com/astaxie/beego"
)

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

    // http://localhost:8080/api/1
    beego.Router("/api/:id", &controllers.ApiController{})
}

显示:

image

二、路由伪静态

cms.go:

package controllers

import (
    "github.com/astaxie/beego"
)

type CmsController struct {
    beego.Controller
}

// 路由伪静态
// http://localhost:8080/cms_1.html
func (c *CmsController) Get() {
    cmsId := c.Ctx.Input.Param(":id")
    c.Ctx.WriteString("CMS详情--" + cmsId)
}

router.go:

package routers

import (
    "beegodemo02/controllers"
    "github.com/astaxie/beego"
)

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

    // http://localhost:8080/api/1
    beego.Router("/api/:id", &controllers.ApiController{})

    // http://localhost:8080/cms_1.html
    beego.Router("/cms_:id([0-9]+).html", &controllers.CmsController{})
}

显示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6m1nUYdO-1608128103434)(https://cdn.jsdelivr.net/gh/Wonz5130/My-Private-ImgHost/img/Snipaste_2020-11-18_17-22-12.png)]

三、路由跳转

login.go:

package controllers

import (
    "fmt"
    "github.com/astaxie/beego"
)

type LoginController struct {
    beego.Controller
}

// 路由伪静态
// http://localhost:8080/cms_1.html
func (c *LoginController) Get() {
    c.TplName = "login.html"
}

func (c *LoginController) DoLogin() {
    username := c.GetString("username")
    password := c.GetString("password")
    fmt.Println(username, password)

    // 执行跳转

    c.Redirect("/", 302)  // 302 表示重定向
    // c.Redirect("/cms_1.html", 302)  // 302 表示重定向
}

router.go:

package routers

import (
    "beegodemo02/controllers"
    "github.com/astaxie/beego"
)

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

    // http://localhost:8080/api/1
    beego.Router("/api/:id", &controllers.ApiController{})

    // http://localhost:8080/cms_1.html
    beego.Router("/cms_:id([0-9]+).html", &controllers.CmsController{})

    beego.Router("/login", &controllers.LoginController{})
    beego.Router("/doLogin", &controllers.LoginController{}, "post:DoLogin")
}

login.html:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
    <form action="/doLogin" method="post">
      用户名: <input type="text" name="username"> <br><br>
      密 码: <input type="text" name="password"> <br><br>

      <input type="submit" value="登录">
    </form>
</body>
</html>

显示:

image

输完用户名和密码点击登录之后,会跳转到 localhost:8080

image

控制台有输出:

image

四、参考教程

Golang 教程 P55


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

638 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传