Go的web开发Gin框架1(八)——Gin

一、重点内容:

知识要点有哪些?

1、了解Gin框架
2、导入使用Gin框架
3、尝试配合GORM开发
4、整合html,css,js

二、详细知识点介绍:

1、Gin框架介绍

​ Gin是一个golang的微框架,封装比较优雅,API友好,源代码比较明确。具有快速灵活,容错方便等特点。其实对于golang而言,web框架的依赖远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错。框架更像是一个常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。

Gin官方文档地址: https://gin-gonic.com/zh-cn/docs/

2、安装Gin

要安装 Gin 软件包,需要先安装 Go 并设置 Go 工作区。

1.下载并安装 gin:
$ go get -u github.com/gin-gonic/gin
image-20230213202809495
2.将 gin 引入到代码中:
import "github.com/gin-gonic/gin"

3、初体验——创建一个get请求

代码:
package main

import (
   "github.com/gin-gonic/gin"
   "net/http"
)

func main() {
   // 创建一个服务
   ginServer := gin.Default()
   // 添加一个get响应
   ginServer.GET("/hello", func(context *gin.Context) {
      context.JSON(http.StatusOK, gin.H{"msg": "hello world!"})
   })
   // 服务器端口
   err := ginServer.Run(":8082")
   if err != nil {
      return
   }
}
测试:

浏览器访问:localhost:8082/hello

image-20230213203941853

控制台日志:

image-20230213204026954

4、简单的GORM+Gin给前端发送MySQL中数据

代码:
package main

import (
   "database/sql"
   "github.com/gin-gonic/gin"
   "github.com/jinzhu/gorm"
   _ "github.com/jinzhu/gorm/dialects/mysql"
   "log"
   "net/http"
   "time"
)

// User 数据库映射结构体
type User struct {
   ID           uint
   Name         string
   Email        *string
   Age          uint8
   Birthday     *time.Time
   MemberNumber sql.NullString
   ActivatedAt  sql.NullTime
   CreatedAt    time.Time
   UpdatedAt    time.Time
}

func main() {
   // 创建一个服务
   ginServer := gin.Default()
   // 数据库操作
   db, err := gorm.Open("mysql", "root:XXXXXX@tcp(127.0.0.1:3306)/mybatis?charset=utf8mb4&parseTime=True&loc=Local")
   if err != nil {
      log.Println(err)
      return
   }
   // 查询ID为2的数据
   var u User
   first := db.Where("id=?", 2).First(&u)
   if first.Error != nil {
      log.Println(first.Error)
   }
   // 添加一个get响应
   ginServer.GET("/hello", func(context *gin.Context) {
      context.JSON(http.StatusOK, gin.H{"name": u.Name, "age": u.Age, "id": u.ID})
   })
   // 服务器端口
   err = ginServer.Run(":8082")
   if err != nil {
      return
   }
}
测试:

浏览器访问:

image-20230213205820817

控制台日志:

image-20230213205914460

数据库查看:

image-20230213210013324

可以看到成功将数据库的数据响应给浏览器了。

5、图标配置:

导入相应包:

$ go get -u github.com/thinkerou/favicon
image-20230213210646298

使用本地图标:

image-20230213211236435

代码:

package main

import (
   "github.com/gin-gonic/gin"
   "github.com/thinkerou/favicon"
   "log"
   "net/http"
)

func main() {
   // 创建一个服务
   ginServer := gin.Default()
   // 使用图标
   ginServer.Use(favicon.New("./static/哔哩哔哩.png"))
   // 添加一个get响应
   ginServer.GET("/hello", func(context *gin.Context) {
      context.JSON(http.StatusOK, gin.H{"name": "李华", "age": 20})
   })
   // 服务器端口
   err := ginServer.Run(":8082")
   if err != nil {
      log.Panicln(err)
      return
   }
}

测试:

image-20230213211400835

6、RestFul API开发

get /user

post /user

put /user

delete /user

post测试

安装APIpost工具用于测试

代码:
package main

import (
   "github.com/gin-gonic/gin"
   "github.com/thinkerou/favicon"
   "log"
   "net/http"
)

func main() {
   // 创建一个服务
   ginServer := gin.Default()
   // 使用图标
   ginServer.Use(favicon.New("./static/哔哩哔哩.png"))
   // 添加一个get响应
   ginServer.GET("/hello", func(context *gin.Context) {
      context.JSON(http.StatusOK, gin.H{"name": "李华", "age": 20})
   })
   // 添加一个post响应
   ginServer.POST("/user", func(context *gin.Context) {
      context.JSON(http.StatusOK, gin.H{"msg": "post user"})
   })
   // 服务器端口
   err := ginServer.Run(":8082")
   if err != nil {
      log.Panicln(err)
      return
   }
}
测试:
image-20230213213207181
put测试

同post测试:

代码:
ginServer.PUT("/user", func(context *gin.Context) {
   context.JSON(http.StatusOK, gin.H{"msg": "post user"})
})
测试:
image-20230213213436935

7、给前端响应html

创建html:

一般放在templates目录下:

image-20230213215005218

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>go web</title>
</head>
<body>
<h1>
    Holle!!!
</h1>
后端发送的消息:
{{.msg}}
<img src="https://ts1.cn.mm.bing.net/th?id=ORMS.125d9efb147fe32b7990b8282e6bd509&pid=Wdp&w=612&h=304&qlt=90&c=1&rs=1&dpr=0.9333299994468689&p=0">
</body>
</html>
代码:
package main

import (
   "github.com/gin-gonic/gin"
   "github.com/thinkerou/favicon"
   "log"
   "net/http"
)

func main() {
   // 创建一个服务
   ginServer := gin.Default()
   // 使用图标
   ginServer.Use(favicon.New("./static/哔哩哔哩.png"))
   // 加载html
   ginServer.LoadHTMLGlob("templates/*")
   // 响应页面给前端
   ginServer.GET("/index", func(context *gin.Context) {
      context.HTML(http.StatusOK, "index.html", gin.H{
         "msg": "服务器发送的html",
      })
   })
   // 服务器端口
   err := ginServer.Run(":8082")
   if err != nil {
      log.Panicln(err)
      return
   }
}
测试:

image-20230213215249284

可以看到成功返回了html数据。

8、整合css和js到html然后响应给前端

创建css和js

image-20230213220504024

css:

image-20230213220527984

js:

image-20230213220546123

整合到html:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>go web</title>
<!--    链接 css和js-->
    <link rel="stylesheet" href="../static/css/style.css">
    <script src="../static/js/common.js"></script>
</head>
<body>
<h1>
    Holle!!!
</h1>
后端发送的消息:
{{.msg}}
<img src="https://ts1.cn.mm.bing.net/th?id=ORMS.125d9efb147fe32b7990b8282e6bd509&pid=Wdp&w=612&h=304&qlt=90&c=1&rs=1&dpr=0.9333299994468689&p=0">
</body>
</html>
代码:
// 加载静态资源
ginServer.Static("/static", "./static")
// 响应页面给前端
ginServer.GET("/index", func(context *gin.Context) {
   context.HTML(http.StatusOK, "index.html", gin.H{
      "msg": "服务器发送的html",
   })
})
测试:
image-20230213220740331

可以看到已经响应。

image-20230213220828283

html也响应。

三、课后个人总结:

此处学习了go的Gin框架,了解了gin框架的强大,设置可以直接编译成exe文件跨平台运行。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
《Go Web开发进阶实战(Gin框架)》是一本针对Go语言的Web开发者的进阶实战书籍。该书主要以Gin框架作为核心内容,通过实际案例的讲解,帮助读者深入理解和掌握Gin框架的使用技巧。 Gin框架是一个轻量级、高性能的Go语言Web框架,提供了许多强大的功能和特性,如路由、中间件、模板渲染等。本书主要介绍了Gin框架的基本概念和用法,并通过实战项目的方式,帮助读者实际运用Gin框架来构建Web应用。 该书内容包括了Gin框架的安装与配置、路由和中间件的使用、参数的绑定与验证、错误处理、模板渲染、文件上传与下载、会话管理等方面的知识。通过对这些知识点的深入理解和实践,读者将能够掌握Gin框架的核心功能,并学会如何在实际项目中应用。 此外,本书还通过实战案例来演示如何使用Gin框架构建不同类型的Web应用,如博客系统、用户认证、API接口等。每个案例都包含详细的代码实现和讲解,读者可以通过跟随案例一步一步地实现,并深入理解Gin框架在实际项目中的应用场景。 总之,通过《Go Web开发进阶实战(Gin框架)》这本书的学习,读者可以系统地学习和掌握Gin框架的使用,并通过实战案例的实践来提升自己的Web开发能力。无论是初学者还是有一定经验的开发者,都能够从中受益,快速掌握Go语言Web开发中使用Gin框架的技巧和经验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱打辅助的小可爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值