这是我参与「第五届青训营 」伴学笔记创作活动的第5天
kitex 是一个 rpc(Remote Procedure Call) 框架 定义DIL定义服务与接口,监听端口,创建客户端,发起请求,服务注册与发现
hertz 请求处理的函数中有两个上下文
支持参数路由和通配路由,优先级为静态路由,命名路由,通配路由
提供了 GET, POST, PUT, DELETE, ANY 等方法用于注册路由
提供Bind,Validate,BindAndValidate函数用于进行参数绑定和校验
中间件的主要客户端中间件和服务端中间件,
c.Abort
c.AbortWithMsg
c.AbortWithSates
GPRM框架关于ORM
demo
package main
import (
"context"
"github.com/cloudwego/hertz/pkg/app"
"github.com/cloudwego/hertz/pkg/app/server"
"github.com/cloudwego/hertz/pkg/common/utils"
"github.com/cloudwego/hertz/pkg/protocol/consts"
)
func main() {
h := server.Default()
h.GET("/ping", func(c context.Context, ctx *app.RequestContext) {
ctx.JSON(consts.StatusOK, utils.H{"message": "pong"})
})
h.Spin()
}
Gorm框架 GORM Guides | GORM - The fantastic ORM library for Golang, aims to be developer friendly.
** ORM 框架 Gorm配置demo**
package main
import (
"gorm.io/gorm"
"gorm.io/driver/sqlite"
)
type Product struct {
gorm.Model
Code string
Price uint
}
func main() {
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
// Migrate the schema
db.AutoMigrate(&Product{})
// Create
db.Create(&Product{Code: "D42", Price: 100})
// Read
var product Product
db.First(&product, 1) // find product with integer primary key
db.First(&product, "code = ?", "D42") // find product with code D42
// Update - update product's price to 200
db.Model(&product).Update("Price", 200)
// Update - update multiple fields
db.Model(&product).Updates(Product{Price: 200, Code: "F42"}) // non-zero fields
db.Model(&product).Updates(map[string]interface{}{"Price": 200, "Code": "F42"})
// Delete - delete product
db.Delete(&product, 1)
}
** Gorm 大致功能** 数据库相关处理,连接数据库,创建数据,查询数据,更新数据,删除数据
- 全功能 ORM
- 关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承)
- Create,Save,Update,Delete,Find 中钩子方法
- 支持
Preload、Joins的预加载 - 事务,嵌套事务,Save Point,Rollback To Saved Point
- Context、预编译模式、DryRun 模式
- 灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus…
- 每个特性都经过了测试的重重考验