Gin框架
介绍
Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点;
对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错
借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范
参考
文档地址:https://github.com/gin-gonic/gin
建议:gin框架和laravel框架有些接近,我们可以按laravel框架思想来学习使用。
安装
按照安装第三方依赖包方式安装即可(前面讲过)
# go get -u github.com/gin-gonic/gin
示例
示例1:web方式访问接口
建立文件gin-frame/example.go
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/index", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "ok",
})
})
r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
启动运行此example.go,作为服务监听
# go run example.go
浏览器访问:http://127.0.0.1:8080/index
示例2:数据库orm访问
需要先安装依赖包gorm
# go get -u gorm.io/gorm
本地创建数据库,名为db_go_shop,建立测试表,测试数据,如下
CREATE TABLE `tp_goods` (
`goods_id` int(11) NOT NULL AUTO_INCREMENT,
`goods_name` varchar(100) NOT NULL,
`shop_id` int(11) NOT NULL,
`category_id` int(5) DEFAULT NULL,
PRIMARY KEY (`goods_id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Records of tp_goods
-- ----------------------------
INSERT INTO `tp_goods` VALUES ('1', '花生', '1', '1');
INSERT INTO `tp_goods` VALUES ('2', '牛奶', '1', '1');
目录结构如下:
goods.go
package models
import "gorm.io/gorm"
type Goods struct {
gorm.Model
GoodsId int `gorm:"primarykey"` //对应表中的字段名 goods_id
ShopId int
CategoryId int
GoodsName string
}
models.go
package models
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/schema"
)
var (
dsn string = "root:root@tcp(localhost:3306)/db_go_shop?charset=utf8mb4"
)
func DB() *gorm.DB {
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
TablePrefix: "tp_",
SingularTable: true,
},
})
fmt.Println("err : ", err)
return db
}
models_test.go
package models
import (
"fmt"
"testing"
)
func TestGetGoods(t *testing.T) {
where := map[string]interface{}{
"goods_id": 1,
}
var goods Goods
DB().Debug().Where(where).Unscoped().Find(&goods)
fmt.Println("goods : ", goods)
}
测试运行(在当前代码目录下)
# go test -v
查询数据库返回结果。