首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >golang :Beego 自建控制器

golang :Beego 自建控制器

原创
作者头像
IT工作者
发布2022-07-25 21:14:30
发布2022-07-25 21:14:30
5850
举报
文章被收录于专栏:程序技术知识程序技术知识

由于研究k8s相关的开源产品,有时候难免会为了看个原理究竟 ,去看源码,偶尔有时间就开始学习golang相关的知识

本篇将使用Beego 框架 ,自建一个控制器

testController.go

代码语言:javascript
复制
package controllers

import (
    "fmt"

    "github.com/astaxie/beego"
)

// TestController  is a test control
type TestController struct {
    beego.Controlle
}

// User is  info of  use
type User struct {
    Username string
    Password string
}

// Get is a function  to test
func (c *TestController) Get() {

    c.Ctx.WriteString(`<html><form action="http://127.0.0.1:8080/testcontrol" method="post">
    <p>username: <input type="text" name="Username"></p>
    <p>password: <input type="text" name="Password"></p>
    <input type="submit" value="提交">
  </form></html>`)
}

// Put is a function  to test
func (c *TestController) Put() {
    c.Ctx.WriteString("hello put")
}

// Post is a function  to test
func (c *TestController) Post() {
    u := User{}
    if err := c.ParseForm(&u); err != nil {
        fmt.Println("error")
    }
    c.Ctx.WriteString("username:" + u.Username)
    c.Ctx.WriteString("password:" + u.Password)
}

这段代码 创建了一个TestController 的控制器,实现了 Get Put Post 方法

其中 Get方法 创建了一个表单 ,Post 方法 使用ParseForm 方法解析了结构体数据

route.go

代码语言:javascript
复制
package routers

import (
    "WEB/controllers"

    "github.com/astaxie/beego"
)

func init() {
    beego.Router("/", &controllers.MainController{})
    beego.Router("/testcontrol", &controllers.TestController{}, "get:Get")
    beego.Router("/testcontrol", &controllers.TestController{}, "post:Post")
}

这段代码初始化了网页的访问路由 ,Get ,Post 分别使用testcontrol 访问

一个小细节

routes包前面的下划线 表示只加载 该包的init方法

也就是main方法一进来就会去初始化路由

运行效果:

bee run 启动项目

浏览器访问 日志输出地址:

端口可以在 此处进行配置

输入 账户 admin/admin

浏览器中打印出 对应的参数值

后台日志

注意:

之前一直输出的是空 ,获取不到对应的参数值,检查之后发现是定义结构体的时候 属性用的小写,一定要使用大写,才能被外部访问到

原来

修改后

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档