Beego-学习笔记

beego架构

积木式集合

cache 缓存模块

config 配置模块

context 上下文模块

logs 日志模块

orm 和数据库操作相关模块

session 会话

httplib 网络相关模块

beego执行逻辑

页面(V) — 控制© — 数据库(M)

beego项目结构
|_____config
|   |---app.config
|_____controllers(C)
|   |---admin
|   |---default.go
|_____main.go
|_____modles(M)
|   |---modles.go
|_____static
|   |---css
|   |---ico
|   |---img
|   |---js
|_____views(V)
|   |---admin
|   |---index.tpl

config 配置文件

controllers 控制ceng

main.go 主入口

modles 和数据库相关

statics 静态文件(html, css, js)

views 页面展示

快速开发

1.环境安装

2.安装bee工具

bee命令

new 基于web开发

api 基于手机接口开发

run 运行

new命令
.
├── conf
│   └── app.conf
├── controllers
│   └── default.go
├── main.go
├── models
├── routers
│   └── router.go
├── static
│   ├── css
│   ├── img
│   └── js
│       └── reload.min.js
├── tests
│   └── default_test.go
└── views
    └── index.tpl
api命令
.
├── conf
│   └── app.conf
├── controllers
│   ├── object.go
│   └── user.go
├── main.go
├── models
│   ├── object.go
│   └── user.go
├── routers
│   └── router.go
└── tests
    └── default_test.go
run命令
bee run (在项目根目录去执行)
http://172.0.0.1:8080/
配置文件
1.系统配置
appname = myweb
httpport = 8080
runmode = dev prod test
2.应用配置

配置数据库

动态配置:
runmode
[dev]
httpport = 8080
[test]
httpport = 8081
[prod]
httpport = 8082
路径操作
1.固定路由
beego.Router("/", &controllers.MainController{})
beego.Router("/admin", &controllers.UserController{})
beego.Router("/admin/index", &controllers.ArticleController{})
beego.Router("/admin/addpkg", &controllers.AddController{})
2.基础路由
基本Get路由
beego.Get("/",func(ctx *context.Context){
	ctx.Output.Body([]byte ("hello world"))
})
基本Post路由
beego.Post("/",func(ctx *context.Context){
	ctx.Output.Body([]byte ("hello world"))
})
3.自定义方法及RESTful规则
beego.Router("/", &IndexController{}, "*:Index")
*post get put delete
127.0.0.1:8080/  (post get put delete)

func init() {
	beego.Router("/", &controllers.MainController{}, "post:Get")
}
操作
1.控制器两个方法
func (c *MainController) Get() {
	c.Data["Website"] = "beego.me"
	c.Data["Email"] = "astaxie@gmail.com"
	c.TplName = "myindex.tpl"
}

func (c *MainController) Test() {
	c.Ctx.WriteString("this is method post!")
}
2.路由配置
func init() {
	beego.Router("/", &controllers.MainController{}, "post:Get", "post:Test")
}
3.curl测试
curl -d 'id=1' '127.0.0.1:8080'
案例
1.写控制器
package controllers

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

type TestController struct {
	beego.Controller
}

func (c *TestController) Get()  {
	c.Ctx.WriteString("beego controller")
}
写路由
func init() {
	beego.Router("/", &controllers.MainController{}, "post:Get", "post:Test")
	beego.Router("/test", &controllers.MainController{}, "post:Get", "post:Test")
}
3.开启
bee run
4.测试
curl去请求
post:
curl -d 'id=1' '127.0.0.1:8080/test'
get:
curl 127.0.0.1:8080/test'
请求参数

http://192.168.0.12/?id=xxx&name=xxxx

GetString(key string) string
GetStrings(key string) []string
GetInt(key string) (int64, error)
GetBool(key string) (bool, error)
GetFloat(key string) (float64, error)

this.Input().Get("id")
案例
1.控制器获取参数
package controllers

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

type TestArgController struct {
	beego.Controller
}

func (c *TestArgController) Get() {
	id := c.GetString("id")
	c.Ctx.WriteString(id)

	name := c.Input().Get("name")
	c.Ctx.WriteString(name)
}

2.写路由
beego.Router("/test/arg", &controllers.TestArgController{}, "get:Get;post:Post")
3.访问

http://localhost:8080//test/arg?id=10&name=xiang

获取结构体
<form id="user" action="http://127.0.0.1:8080/test/arg" method="post">
            名字: <input name="username" type="text" />
            年龄: <input name="age" type="text" />
            邮箱: <input name="email" type="text" />
            <input type="submit" value="提交" />
package controllers

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

type User struct {
	Uid      int    `form:"-"`
	Username string `form:"username"`
	Age      string `form:"age"`
	Email    string `form:"email"`
}
type TestArgController struct {
	beego.Controller
}

func (c *TestArgController) Get() {
	c.TplName = "myindex.tpl"
}

func (c *TestArgController) Post() {
	u := User{}
	if err := c.ParseForm(&u); err != nil {

	}
	c.Ctx.WriteString("Username:" + u.Username + "Age:" + u.Age + "Email:" + u.Email)
}

model层

beego ORM是一个强大的go语言ORM框架

1.ORM特性
支持go所有类型存储
简单易上手
自动Join关联表
跨数据库兼容
允许直接使用SQL查询/映射
2.代码实战
1.控制器

xxxController

TestMode.go

func init() {
	err := orm.RegisterDataBase("default", "mysql", "root:li000000@tcp(127.0.0.1:3306)/WebTest?charset=utf8", 30)
	if err != nil {
		panic(err)
	}
	orm.RegisterModel(new(UserInfo)) //创建一个user_info表 UserInfo
}

func (c *TestModelController) Get() {
	o := orm.NewOrm()
	user := UserInfo{Username: "xiang", Password: "123456"}
	id, err := o.Insert(&user)

	c.Ctx.WriteString(fmt.Sprintf("操作数据库id=%d err:%v", id, err))

}

router.go

package routers

import (
	"github.com/astaxie/beego"
	"github.com/beego/bee/myweb/controllers"
)

func init() {
	beego.Router("/", &controllers.MainController{}, "get:Get;post:Test")
	beego.Router("/test", &controllers.TestController{}, "get:Get;post:Post")
	beego.Router("/test/arg", &controllers.TestArgController{}, "get:Get;post:Post")
	//测试ORM
	beego.Router("/test/orm", &controllers.TestModelController{}, "get:Get;post:Post")
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值