Go beego包

摘要;Beego脱坑(三)Router - Go语言中文网 - Golang中文社区

1.示例代码

app01/main.go

package main 

import (
    "github.com/astaxie/beego"
    _ "app01/router"  // 初始化路由
)

func main() {

    beego.Run()

}

app01/router/route.go

package router

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

func init() {

    // ProductList视图函数
    beego.Router("/hello", &controller.ProductController{}, "*:ProductList")  // * 允许所有方法
}

app01/controller/pro.go

package controller

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

type ProductController struct {
    beego.Controller  // 继承,特定写法
}

func (p *ProductController) ListProduct() {
    pmode := mode.NewProMode()
    product, err := pmode.GetProList()
    if err != nil {
        logs.Warn("get product list failed, err: %v", err)
        return
    }
    
    p.Data["product_list"] = product  // 返回前端数据
    
    // html
    p.TplName = "produc/list.html"
    p.Layout = "layout/lay.html"
}

2.路由类型:基础路由

// 基础路由中的post方法
beego.Post("/post", func(this *context.Context) {
    beego.Info("基础路由中的post方法")
    this.Output.Body([]byte("基础路由中的post方法"))
})

3.路由类型:固定路由

routers.go

func init() {
    // 固定路由
    beego.Route("/GetInfo", &controllers.MainController{})  // 自定义结构体MainController
}

controllers.go


type MainController struct {
    beego.Controller
}

func (this *MainController) Post() {
    beego.Info("固定路由post方法")
    this.Ctx.Output.Body("固定路由post方法")
}

func (this *MainController) Get() {

}

func (this *MainController) Delete() {

}

...

4.路由类型:正则路由

routers.go

func init() {
    // 正则路由

    // * 全匹配
    beego.Route("/*", &controllers.RegController{})  // 自定义结构体RegController

    // :id 变量匹配
    beego.Route("/getUser/:id", &controllers.RegController{})

    // 正则表达式 匹配
    beego.Route("/getUser/:name([0-9]+)", &controllers.RegController{})  // 一次或多次,且自能包含0-9

    // *.* 匹配静态资源
    // 例如:http://localhost:8080/upload/file/img/hello.jpg
    beego.Route("/upload/*.*", &controllers.RegController{})  

    // :int 类型匹配
    beego.Route("/getUser/:id:int", &controllers.RegController{})

    // :string 类型匹配
    beego.Route("/getUser/:name:string", &controllers.RegController{})
}

controllers.go

type RegController struct {
    beego.Controller
}

func (this *RegController) Post() {
    beego.Info("正则匹配路由实现")
    id := this.Ctx.Input.Param(":id")
    this.Ctx.ResponseWrite.Write([]byte("Id:"+id))
}

func (this *RegController) Get() {
    // *.* 匹配获取参数是固定写法
    path := this.Ctx.Input.Param(":path")
    ext:= this.Ctx.Input.Param(":ext")
    
    this.Ctx.ResponseWrite.Write([]byte("path :"+path + "ext:" + ext))

}

func (this *RegController) Delete() {

}

...

5.路由类型:自定义路由

routers.go

func init() {
    // 自定义路由
    beego.Route("/GetInfo", &controllers.MainController{}, "GET:GetUserInfo")  // GET方法

    beego.Route("/registerInfo", &controllers.MainController{}, "GET:RegisterUserInfo")  // POST方法
}

controllers.go



type CustomController struct {
    beego.Controller
}


func (this *RegController) GetUserInfo() {
    
    name:= this.GetString("userName")

    
    this.Ctx.Output.Body([]byte("获取数据:"+name))

}

func (this *RegController) RegisterUserInfo() {
    
    name:= this.GetString("userName")

    
    this.Ctx.Output.Body([]byte("获取数据:"+name))

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值