Gin 框架的使用(1)

简介: Gin 框架的使用

1、Gin 快速开发

1.1、环境准备

1.1.1、导入 gin 依赖

这里就叫 gin 依赖了,在 Goland 命令行中输入下面的命令:

go get -u github.com/gin-gonic/gin

1.1.2、设置代理

如果下载失败,最好设置一下代理,在 cmd 命令行中输入下面的命令:

go env -w GOPROXY=https://goproxy.cn,direct

完了之后再 Goland 这里同样设置启用 environment:

1.2、快速开发

1.2.1、Hello world

package main
 
import "github.com/gin-gonic/gin"
 
func main() {
  // 创建一个服务
  ginServer := gin.Default()
 
    // todo Go语言中的处理请求方法都是函数式编程:第一个参数是请求地址 第二个请求是函数
  // 访问地址,处理请求
  ginServer.GET("/hello", func(context *gin.Context) {
    context.JSON(200,gin.H{"msg":"hello world"})
  })
 
    // 设置服务器端口
  ginServer.Run(":8082") // 默认 8080
}

       上面,我们首先得到了 ginServer ,然后直接通过函数式编程,给 GET 请求 "/hello" 设置处理函数:直接返回给前端一段 JSON 数据。

       这个返回格式和我们之前学习的 SpringBoot 是不谋而合的,它们都会返回一个状态码和一段任意类型的信息(在 SpringBoot 中是 Object,在这里是 any 类型)。

启动程序,访问 localhost:8082:

1.2.2、给网页设置 icon  

直接在 Goland 命令行输入:go get "github.com/thinkerou/favicon":

直接在上面的代码基础上添加下面的代码:

import(
    "github.com/thinkerou/favicon"
)

在 main 方法中添加一行代码即可:

    // 设置网页icon
  ginServer.Use(favicon.New("./sxau.ico"))

测试:

// todo 新增用户
  ginServer.POST("/user", func(ctx *gin.Context) {
    ctx.JSON(200,gin.H{
      "msg":"新增用户",
    })
  })

1.2.3、给前端响应界面

1、加载 HTML 文件

       有两种方法,一种是加载 html 所在目录下所有文件,一种是加载单个 html 文件:

    // 加载静态页面
  ginServer.LoadHTMLGlob("static/html/*")
  //ginServer.LoadHTMLFiles("static/index.html") // 加载指定的 HTML 文件

2、加载 css、js
    // 加载资源文件 css、js
  ginServer.Static("/static","./static")

       此外,我们可以看到每次运行,Go 都会把我们的程序打包为一个 exe(windows),在 linux 和 mac 上同样会直接打包为一个可执行文件,所以特别方便!

1.2.4、获取请求中的参数

1)& ?格式
// 1. /user?user_id=xxx&username=xxx 格式
  ginServer.GET("/user", func(ctx *gin.Context) {
    user_id := ctx.Query("user_id")
    username := ctx.Query("username")
    ctx.JSON(http.StatusOK,gin.H{
      "user_id": user_id,
      "username": username,
    })
  })

2)RESTful 风格

SpringBoot 中我们使用 /user/{user_id} 的格式来传递参数,go 语言中我们使用 :user_id 来传递

// 2. /user/user_id/username
  ginServer.GET("/user/:user_id/:username", func(ctx *gin.Context) {
    user_id := ctx.Param("user_id")
    username := ctx.Param("username")
    ctx.JSON(http.StatusOK,gin.H{
      "user_id": user_id,
      "username": username,
    })
  })

1.2.5、序列化数据

把前端发来的数据(已经不是 json 了)转为 json 再返回:

  // todo 前端给后端传递 json
  ginServer.POST("/json", func(ctx *gin.Context) {
    // 从请求体(request.body)获得对象
    // GetRawData() 返回请求体切片[]byte和错误信息err
    data,err := ctx.GetRawData()
    fmt.Println("date => "+string(data))
    fmt.Println("err => ",err)
 
    var m map[string]interface{}
    // 序列化包装为json数据
    _ = json.Unmarshal(data,&m)
 
    ctx.JSON(http.StatusOK,m)
  })

1.2.6、获取表单数据

    // todo 新增用户
  ginServer.POST("/user", func(ctx *gin.Context) {
 
    // 对应表单的input标签的name属性
    username := ctx.PostForm("username")
    password := ctx.PostForm("password")
 
    ctx.JSON(200,gin.H{
      "msg":"新增用户",
      "username":username,
      "password":password,
    })
  })

1.2.5、路由之重定向到首页

重定向的状态码是 301 !

    // todo 路由
  ginServer.GET("/test", func(ctx *gin.Context) {
    // 重定向 301
    ctx.Redirect(http.StatusMovedPermanently,"/index")
  })

1.2.6、路由之404页面

    // 404
  ginServer.NoRoute(func(ctx *gin.Context) {
    // 它会自动拼接 static/html/
    ctx.HTML(http.StatusNotFound,"404.html",nil)
  })

1.2.7、路由之路由组

路由组就相当于我们 SpringBoot 中控制器类上面 @RequestMapping 的统一前缀:

    // 路由组(RESTful 风格)
  book := ginServer.Group("/book")
  {
    // 相当于访问 /book/id
    book.GET("/:id", func(ctx *gin.Context) {
 
    })
    // 相当于访问 /book/id
    book.DELETE("/:id", func(ctx *gin.Context) {
 
    })
  }

Gin 框架的使用(2)https://developer.aliyun.com/article/1534252

相关文章
|
安全 前端开发 关系型数据库
IM即时通讯系统开发技术规则
IM即时通讯系统开发涵盖客户端与服务器端,涉及前端、后端、网络通信及多媒体处理等技术领域,支持文字、语音、图片、视频等多种实时交流方式。开发流程包括需求分析、技术选型、系统设计、开发实现、测试优化及部署维护等阶段,需关注网络通信、多媒体处理、安全性及可扩展性等关键技术点,广泛应用于社交、客服、团队协作及游戏等领域。
|
JSON 缓存 前端开发
Go语学习笔记 - 环境安装、接口测试 | Web框架Gin(一)
Go语学习笔记 - 环境安装、接口测试 | Web框架Gin(一)
Go语学习笔记 - 环境安装、接口测试 | Web框架Gin(一)
|
11月前
|
开发框架 安全 前端开发
Go Web开发框架实践:模板渲染与静态资源服务
Gin 是一个功能强大的 Go Web 框架,不仅适用于构建 API 服务,还支持 HTML 模板渲染和静态资源托管。它可以帮助开发者快速搭建中小型网站,并提供灵活的模板语法、自定义函数、静态文件映射等功能,同时兼容 Go 的 html/template 引擎,具备高效且安全的页面渲染能力。
|
前端开发 中间件 关系型数据库
|
关系型数据库 应用服务中间件 nginx
基于Docker的LNMP环境微服务搭建
基于Docker的LNMP环境微服务搭建
基于Docker的LNMP环境微服务搭建
|
Java Linux Go
知识分享之Golang——读取pdf中纯文本内容
知识分享之Golang篇是我在日常使用Golang时学习到的各种各样的知识的记录,将其整理出来以文章的形式分享给大家,来进行共同学习。欢迎大家进行持续关注。 知识分享系列目前包含Java、Golang、Linux、Docker等等。
2508 1
知识分享之Golang——读取pdf中纯文本内容
|
Docker 容器
解决:Error response from daemon: manifest for xxx:latest not found: manifest unknown.
解决:Error response from daemon: manifest for xxx:latest not found: manifest unknown.
2337 0
|
JSON 中间件 Go
Go语言Web框架Gin介绍
【7月更文挑战第19天】Gin是一个功能强大、高性能且易于使用的Go语言Web框架。它提供了路由、中间件、参数绑定等丰富的功能,帮助开发者快速构建高质量的Web应用。通过本文的介绍,你应该对Gin框架有了初步的了解,并能够使用它来开发简单的Web服务。随着你对Gin的深入学习和实践,你将能够利用它构建更复杂、更强大的Web应用。
|
Linux 虚拟化 数据安全/隐私保护
使用VMware安装linux虚拟机
使用VMware安装linux虚拟机
使用VMware安装linux虚拟机
|
NoSQL 中间件 数据库
如何基于 Gin 封装出属于自己 Web 框架?
如何基于 Gin 封装出属于自己 Web 框架?
247 0

热门文章

最新文章