golang :Beego 自建控制器

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/textdemo123/article/details/102702447

由于研究k8s相关的开源产品,有时候难免会为了看个原理究竟 ,去看源码,偶尔有时间就开始学习golang相关的知识
本篇将使用Beego 框架 ,自建一个控制器
testController.go

package controllers

import (
	"fmt"

	"github.com/astaxie/beego"
)

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

// User is  info of  user
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

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
浏览器中打印出 对应的参数值
在这里插入图片描述
后台日志
在这里插入图片描述
注意:
之前一直输出的是空 ,获取不到对应的参数值,检查之后发现是定义结构体的时候 属性用的小写,一定要使用大写,才能被外部访问到
原来
在这里插入图片描述
修改后
在这里插入图片描述
参考
https://www.imooc.com/article/261217?block_id=tuijian_wz

猜你喜欢

转载自blog.csdn.net/textdemo123/article/details/102702447
今日推荐