美文网首页
十分钟带你了解go语言Web框架 beego

十分钟带你了解go语言Web框架 beego

作者: hi李昊天 | 来源:发表于2019-07-09 01:28 被阅读0次

01: 安装/升级

框架安装

前提需要安装 bee工具

bee工具安装方法:

go get github.com/beego/bee

创建web项目:

 bee new my_project

创建api项目:

bee api my_project

启动项目

bee run

打包项目

用来发布时打包应用 会把项目打包成 zip 压缩包,解压就可以部署

bee pack

02: MVC快速入门

01: 路由

路由配置文件在项目目录下的routes目录下

基础例子

beego.Router("/home", &controllers.HomeController{})

基本GET路由

beego.Get("/",func(ctx *context.Context){
     ctx.Output.Body([]byte("hello world"))
})

基本POST路由

beego.Post("/user",func(ctx *context.Context){
     ctx.Output.Body([]byte("bob"))
})

路由默认访问的控制器方法

请求类型 方法
GET Get
POST Post
PUT Put
DELETE Delete
PATCH Patch
OPTIONS Options

路由参数

下面例子中使用以:开头的为路由参数

beego.Router("/:id", &controllers.ArticleController{})
beego.Router("/:id/:name", &controllers.UserController{})

可忽略参数

beego.Router("/?:id", &controllers.ArticleController{})

限制参数类型

beego.Router("/:id([0-9]+)", &controllers.ArticleController{})

自定义操作方法

beego.Router("/", &controllers.ArticleController{},"get:Index;post:Save")
beego.Router("/:id", &controllers.ArticleController{},"delete:Delete,put:Update")
beego.Router("/:id/edit", &controllers.ArticleController{},"get:Edit")

上面生成的路由为:

请求方式 路由地址 说明
GET http://127.0.0.1:8000/ 获取文章列表
POST http://127.0.0.1:8000/ 创建文章
GET http://127.0.0.1:8000/10000/edit 获取要编辑的文章
PUT http://127.0.0.1:8000/1000 更新文章
DELETE http://127.0.0.1:8000/1000 删除文章

02: 控制器

控制器定义

只需要匿名组合 beego.Controller

type HomeController struct {
    beego.Controller
}

控制器方法

func (c *HomeController) Home() {
    
}

请求参数获取

获取全部类型的参数

不管是get还是post或者其他类型的都可以获取到

  • 请求地址: POST http://127.0.0.1:8080/?id=1
var id := c.GetString("id")
  • 请求地址: GET http://127.0.0.1:8080/?id=1&id=2&id=3

获取数组参数

var ids := c.GetStrings("id")

获取路由变量值

该方法只能获取到路由地址中定义的变量所对应的值

var id = c.Ctx.Input.Param(":id")

参数自动解析到struct

结构体的 tag为: form:"xxx"

  • 定义结构体:
type Login struct {
    Account  string `form:"account"`
    Password string  `form:"password"`
}
  • 控制器方法
func (c *HomeController) Save() {
    login := Login{}
    if err := c.ParseForm(&login); err != nil {
        panic("解析失败")
    }
    fmt.Println(login)
}

数据绑定

从请求中直接数据bind到指定的对象

var id int
_ = c.Ctx.Input.Bind(&id, "id")
fmt.Println(id)

请求类型检测

支持很多类型 下面列举几个常用的

调用方法 说明
c.Ctx.Input.IsAjax() 是否为Ajax请求
c.Ctx.Input.IsPost() 是否为post请求
c.Ctx.Input.IsGet() 是否为Get请求
c.Ctx.Input.IsWebsocket() 是否为websocket请求
  • 请求类型检测都是基于input.Is(method) 函数封装的
  • 所以完全可以使用 c.Ctx.Input.Is()去实现 效果和效率基本都一致

url构建

其实就一个 UrlFor

UrlFor("HomeController.Index")

模板渲染

c.TplName = "index.html"

如果不设置该参数,那么默认会去到模板目录的 Controller/<方法名>.tpl 查找,例如下面的的方法会去 homecontroller/home.tpl (文件、文件夹必须小写)

func (c *HomeController) Home() {
// 没有设置TplName
}

不使用模板

有些场景下我们不需要使用模板 有两个方式关闭

方法1

c.EnableRender = false

方法2:

全局的关闭在配置文件里面增加autorender = false

返回json数据

第一种:

    var data = make(map[string]string)
    data["username"] = "lee"
    c.Data["json"] = data
    c.ServeJSON()
第二种:

使用结构体

  • 定义结构体
type User struct {
    Id       int    `json:"id"`
    Username string `json:"username"`
}
var data = User{Id: 1000, Username: "lee"}
c.Data["json"] = data
c.ServeJSON()

03: 模型

模型代码在models目录下
本次使用的数据库为mysql数据库

安装orm

  • 安装命令:
go get github.com/astaxie/beego/orm

基本使用

在models目录下创建models.go文件 键入以下代码:

package models

import (
    "fmt"
    "github.com/astaxie/beego/orm"
      _ "github.com/go-sql-driver/mysql"
)

func init() {
    _ = orm.RegisterDriver("mysql", orm.DRMySQL)
    var err = orm.RegisterDataBase("default", "mysql", "root:root@tcp(127.0.0.1)/blog")

    if err != nil {
        fmt.Println("数据库连接失败", err)
        return
    }
}

之后再main.go中写入:

import _ "demo/article_demo/myproject/models"

数据库的设置

设置 driverName 对应的数据库类型

参数1 : driverName
参数2 : 数据库类型
mysql sqlite3 postgres 这三种是默认已经注册过 所以可以无需设置

orm.RegisterDriver("mymysql", orm.DRMySQL)

数据库注册

必须注册一个别名为 default 的数据库作为默认使用

var err = orm.RegisterDataBase(aliasName, driverName, dataSource,params)

参数:

参数名 说明 可否为空
aliasName 数据库的别名,用来在ORM中切换数据库使用
driverName driverName
dataSource 对应的链接字符串
params 如果传递1个 第一个是设置最大空闲连接,如果传递两个,第二个是设置最大数据库连接

注册模型

调试模式

自动建表

表生成model

CRUD操作

04: 视图

其他模块

01: Session

02: Cache

03: Logs

04: 应用部署

01: 独立部署

02: nginx 部署

等待更新完毕...

相关文章

  • go语言web框架beego安装(go mod方式)

    go语言web框架beego安装(go mod方式)_不忘初心,方得始终-CSDN博客[https://blog....

  • 初窥Go轻量级框架beego

    ****前言****初窥Go轻量级框架beego 基于Go语言的轻量级Web框架 国人开发的优秀框架 稳定可靠、社...

  • 十分钟带你了解go语言Web框架 beego

    01: 安装/升级 框架安装 前提需要安装 bee工具 bee工具安装方法: 创建web项目: 创建api项目: ...

  • 快速上手go-doudou开发单体RESTful服务

    笔者2015年开始接触go语言并采用go语言从事web项目开发至今,先后用过beego、gin、grpc等框架。这...

  • beego框架使用

    一,beego简介 1,beego是一个go语言框架,可以用来快速开发API、Web、后端服务等各种应用。2,be...

  • Go语言Web框架

    Beego: 一个Go语言下开源的,高性能Web框架 https://github.com/astaxie/bee...

  • 优秀网站

    一.语言栈 GO go 博客 Go中国 zupzup : web Ewan : 微服务 go开源项目 Beego:...

  • Beego Models 之 一

    模型(Models)- beego ORM 原文 beego ORM 是一个强大的 Go 语言 ORM 框架。她的...

  • 1.beego框架简介

    beego 简介 beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及...

  • 初识beego

    beego简介 beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后...

网友评论

      本文标题:十分钟带你了解go语言Web框架 beego

      本文链接:https://www.haomeiwen.com/subject/qnnohctx.html