程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-06(3)

GoLang之Gin框架

发布于2021-06-12 13:10     阅读(539)     评论(0)     点赞(30)     收藏(0)


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

  1. package main
  2. import "github.com/gin-gonic/gin"
  3. func main() {
  4. r := gin.Default()
  5. r.GET("/index", func(c *gin.Context) {
  6. c.JSON(200, gin.H{
  7. "message": "ok",
  8. })
  9. })
  10. r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
  11. }

启动运行此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,建立测试表,测试数据,如下

  1. CREATE TABLE `tp_goods` (
  2. `goods_id` int(11) NOT NULL AUTO_INCREMENT,
  3. `goods_name` varchar(100) NOT NULL,
  4. `shop_id` int(11) NOT NULL,
  5. `category_id` int(5) DEFAULT NULL,
  6. PRIMARY KEY (`goods_id`)
  7. ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
  8. -- ----------------------------
  9. -- Records of tp_goods
  10. -- ----------------------------
  11. INSERT INTO `tp_goods` VALUES ('1', '花生', '1', '1');
  12. INSERT INTO `tp_goods` VALUES ('2', '牛奶', '1', '1');

目录结构如下:

goods.go

  1. package models
  2. import "gorm.io/gorm"
  3. type Goods struct {
  4. gorm.Model
  5. GoodsId int `gorm:"primarykey"` //对应表中的字段名 goods_id
  6. ShopId int
  7. CategoryId int
  8. GoodsName string
  9. }

models.go

  1. package models
  2. import (
  3. "fmt"
  4. "gorm.io/driver/mysql"
  5. "gorm.io/gorm"
  6. "gorm.io/gorm/schema"
  7. )
  8. var (
  9. dsn string = "root:root@tcp(localhost:3306)/db_go_shop?charset=utf8mb4"
  10. )
  11. func DB() *gorm.DB {
  12. db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
  13. NamingStrategy: schema.NamingStrategy{
  14. TablePrefix: "tp_",
  15. SingularTable: true,
  16. },
  17. })
  18. fmt.Println("err : ", err)
  19. return db
  20. }

models_test.go

  1. package models
  2. import (
  3. "fmt"
  4. "testing"
  5. )
  6. func TestGetGoods(t *testing.T) {
  7. where := map[string]interface{}{
  8. "goods_id": 1,
  9. }
  10. var goods Goods
  11. DB().Debug().Where(where).Unscoped().Find(&goods)
  12. fmt.Println("goods : ", goods)
  13. }

测试运行(在当前代码目录下)

# go test -v

查询数据库返回结果。



所属网站分类: 技术文章 > 博客

作者:长这么胖

链接:http://www.javaheidong.com/blog/article/221871/a28aeb1c7ce7c4bfef80/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

30 0
收藏该文
已收藏

评论内容:(最多支持255个字符)