beego 学习

本贴最后更新于 2499 天前,其中的信息可能已经事过境迁

beego 一种 MVC 架构的 web 框架,网上评价:设计繁复。优点:简单,国人开人,文档,资料多。

orm

  • 支持 Go 的所有类型存储

  • 轻松上手,采用简单的 CRUD 风格

  • 自动 Join 关联表

  • 跨数据库兼容查询

  • 允许直接使用 SQL 查询/映射

  • 严格完整的测试保证 ORM 的稳定与健壮

func init() {
	// 注册数据库
	orm.RegisterDataBase("default", "mysql", "root:root@/my_db?charset=utf8", 30)

	// 创建数据库,第三个参数是是否检测数据库重复,报错
	orm.RunSyncdb("default", false, true)
}

ORM 接口使用

  var o Ormer
  o = orm.NewOrm() // 创建一个 Ormer
  // NewOrm 的同时会执行 orm.BootStrap (整个 app 只执行一次),用以验证模型之间的定义并缓存。
  var r RawSeter
  r = o.Raw("UPDATE user SET name = ? WHERE name = ?", "testing", "slene")
  // Raw 函数,返回一个 RawSeter 用以对设置的 sql 语句和参数进行操作

}

context 模块

上下文模块主要是针对 HTTP 请求中,request 和 response 的进一步封装,他包括用户的输入和输出,用户的输入即为 request,context 模块中提供了 Input 对象进行解析,用户的输出即为 response,context 模块中提供了 Output 对象进行输出。

golang strconv 包

strconv 实现与基本数据类型的字符串表示形式的转换

package main

import (
	"fmt"
	"strconv"
)

func main() {
	// ParseBool 将字符串转换为布尔值
	fmt.Println(strconv.ParseBool("1")) // true
	fmt.Println(strconv.ParseBool("TRue"))
	// false strconv.ParseBool: parsing "TRue": invalid syntax
	fmt.Println(strconv.ParseBool("0")) // false
	fmt.Println(strconv.ParseBool("FALse"))
	// false strconv.ParseBool: parsing "FAlse": invalid syntax

	// FormatBool 将布尔值转换为字符串 "true" 或 "false"
	fmt.Println(strconv.FormatBool(0 > 1)) // false

	// ParseInt 将字符串转换为 int 类型
	// Atoi 相当于 ParseInt(s, 10, 0)
	// 通常使用这个函数,而不使用 ParseIn
	fmt.Println(strconv.Atoi("2147483647"))
	// 2147483647
	fmt.Println(strconv.Atoi("2147483648"))
	// 2147483647 strconv.ParseInt: parsing "2147483648": value out of range

	// ParseFloat 将字符串转换为浮点数
	s := "0.12345678901234567890"
	f, err := strconv.ParseFloat(s, 32)
	fmt.Println(f, err) // 0.12345679104328156
}

casbin

casbin 是一个用 Go 语言打造的轻量级开源访问控制框架,casbin 采用了元模型的设计思想,支持多种经典的访问控制方案,如基于角色的访问控制 RBAC、基于属性的访问控制 ABAC 等。

casbin 的主要特性包括

  • 支持自定义请求的格式,默认的请求格式为{subject, object, action};
  • 具有访问控制模型 model 和策略 policy 两个核心概念;
  • 支持 RBAC 中的多层角色继承,不止主体可以有角色,资源也可以具有角色;
  • 支持超级用户,如 root 或 Administrator,超级用户可以不受授权策略的约束访问任意资源;
  • 支持多种内置的操作符,如 keyMatch,方便对路径式的资源进行管理,如/foo/***ar 可以映射到/foo

casbin 不做的事情

  • 身份认证 authentication(即验证用户的用户名、密码),casbin 只负责访问控制。应该有其他专门的组件负责身份认证,然后由 casbin 进行访问控制,二者是相互配合的关系;

  • 管理用户列表或角色列表。casbin 认为由项目自身来管理用户、角色列表更为合适,casbin 假设所有策略和请求中出现的用户、角色、资源都是合法有效的。

  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    497 引用 • 1387 回帖 • 283 关注
  • Beego
    8 引用 • 9 回帖

相关帖子

回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...