7

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

 3 years ago
source link: https://studygolang.com/articles/32407
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

一、动态路由

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{})
}
f0aff41dc692706f0ba7c310006f4557.png
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>
e4cfd5e46f6edc287a5dd984167992f3.png
image

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

27b73cfc36532657ccbbeb9c65524c56.png
image

控制台有输出:

816e73d3db5848b7a6a400a0c6ca2a16.png
image

四、参考教程

Golang 教程 P55


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

280

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK