GoLang之Gin框架

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

查询数据库返回结果。

Guess you like

Origin blog.csdn.net/yan_dk/article/details/117786678