首页 > 其他分享 >GolangWeb框架——Gin框架的使用

GolangWeb框架——Gin框架的使用

时间:2023-08-27 22:11:40浏览次数:27  
标签:GolangWeb 框架 中间件 gin func router Gin 路由

Gin是一个轻量级、灵活和高性能的Web框架,基于Go语言开发。它提供了简洁的API设计和出色的性能,使得构建Web应用程序变得更加简单和高效。本文将介绍如何使用Gin框架来快速构建Web应用程序,并展示其主要特性和用法。本文将介绍关于Gin的基本使用方法,包括基本的请求处理与发送响应。

Gin 包括以下几个主要的优势:

  • 简单好用的核心上下文 Context。
  • 高性能:Gin采用了高效的路由匹配算法和并发处理机制,能够处理大量并发请求,具有较低的内存占用和 快速的响应速度。
  • 轻量级:Gin的代码库相对较小,没有多余的依赖项,运行时资源消耗较少。
  • 强大的路由功能:Gin支持灵活的路由定义和参数解析,可以轻松地处理不同的HTTP请求方法、路径和参数。
  • 中间件支持:Gin提供了丰富的中间件功能,通过中间件可以实现请求前置处理、身份验证、日志记录等各种功能。
  • JSON解析器和验证器:Gin集成了JSON解析器和验证器,能够方便地处理JSON请求和响应,并进行参数验证。
  • 渲染功能:Gin支持多种渲染方式,包括HTML模板、JSON、XML等,可以根据不同的需求选择合适的渲染方式。
  • 完善的文档和社区支持:Gin拥有详细的文档和活跃的社区,开发者可以轻松找到解决问题的方式和技术支持。

前置引入

1、安装Gin框架:
首先,确保你已经安装了Go语言和设置了环境变量。然后,可以通过以下命令来安装Gin框架:

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

基本导入

1、创建一个简单的Hello World应用:
在你的Go项目中,创建一个main.go文件,并添加以下代码:

package main  
  
   import (  
      "github.com/gin-gonic/gin"  
   )  
  
   func main() {  
      // 创建Gin路由  
      router := gin.Default()  
  
      // 定义路由处理函数  
      router.GET("/", func(c *gin.Context) {  
         c.String(200, "Hello World!")  
      })  
  
      // 启动服务器  
      router.Run(":8080")  
   }

在上述代码中,我们首先导入了gin包,并创建了一个默认的Gin路由。然后,我们定义了一个处理函数,当请求根路径时,返回"Hello World!"。最后,通过调用Run方法来启动服务器,监听本地的8080端口。
2、添加路由和中间件:
Gin框架提供了灵活的路由和中间件机制。下面是一个添加路由和中间件的示例:

func main() {  
      router := gin.Default()  
  
      // 添加中间件  
      router.Use(gin.Logger())  
      router.Use(gin.Recovery())  
  
      // 添加路由  
      router.GET("/", func(c *gin.Context) {  
         c.String(200, "Hello World!")  
      })  
  
      router.GET("/users/:id", func(c *gin.Context) {  
         id := c.Param("id")  
         c.String(200, "User ID: "+id)  
      })  
  
      // 启动服务器  
      router.Run(":8080")  
   }

在上述代码中,我们使用router.Use方法添加了两个中间件:gin.Logger()用于记录请求日志,gin.Recovery()用于在发生错误时恢复程序的运行。此外,我们还添加了两个路由:一个是根路径的处理函数,另一个是带有参数的路由,通过c.Param方法获取参数值。
3、处理请求和发送响应:
Gin框架提供了丰富的方法来处理请求和发送响应。以下是几个常用的方法示例:

func main() {  
      router := gin.Default()  
  
      router.GET("/ping", func(c *gin.Context) {  
         c.JSON(200, gin.H{  
            "message": "pong",  
         })  
      })  
  
      router.POST("/users", func(c *gin.Context) {  
         name := c.PostForm("name")  
         age := c.PostForm("age")  
         c.JSON(200, gin.H{  
            "name": name,  
            "age":  age,  
         })  
      })  
  
      router.GET("/redirect", func(c *gin.Context) {  
         c.Redirect(301, "https://www.example.com")  
      })  
  
      // 启动服务器  
      router.Run(":8080")  
   }

在上述代码中,我们使用c.JSON方法返回JSON格式的数据,c.PostForm方法获取POST请求的表单数据,以及使用c.Redirect方法进行重定向。
4、静态文件和模板渲染:
Gin框架还支持静态文件服务和模板渲染。以下是一个示例:

func main() {  
      router := gin.Default()  
  
      // 静态文件服务  
      router.Static("/static", "./static")  
  
      // 模板渲染  
      router.LoadHTMLGlob("templates/*")  
      router.GET("/index", func(c *gin.Context) {  
         c.HTML(200, "index.html", gin.H{  
            "title": "Gin Web App",  
         })  
      })  
  
      // 启动服务器  
      router.Run(":8080")  
   }  
  

在上述代码中,我们使用router.Static方法来设置静态文件的路径和目录,以及使用router.LoadHTMLGlob方法加载模板文件。然后,通过c.HTML方法渲染模板和传递参数。

标签:GolangWeb,框架,中间件,gin,func,router,Gin,路由
From: https://www.cnblogs.com/johnsonstar/p/17660979.html

相关文章

  • Nginx
    目录Nginx编译安装nginx分割日志优雅退出飞行升级回滚配置详细解释修改worker数量关闭版本或修改版本mimeserver下的rootserver块构建虚拟主机实际只有一台好像很多主机alias别名location404自定义图标Nginx编译安装nginx[root@localhost/]#cddata#进入到data目录,把nginx......
  • nginx从入门到实战
    概述异步非阻塞的高性能HTTP和反向代理服务器  nginx的运行架构 1、Master进程 启动检查nginx.conf是否正确 根据配置文件创建、监控worker进程的数量和状态 监听socket,接受client发起的请求,然后worker竞争抢夺连接,获胜的worker可以相应请求 接收管理员发送......
  • Nginx配置详细解释
    一、配置解释nginx官方帮助文档:http://nginx.org/en/docs/tengine帮助文档:http://tengine.taobao.org/nginx_docs/cn/docs/Nginx的配置文件的组成部分:主配置文件:nginx.conf子配置文件:includeconf.d/*.conf1.1全局配置nginx有多种模块核心模块:是Nginx服务器正常......
  • 【Ehcache技术专题】「入门到精通」带你一起从零基础进行分析和开发Ehcache框架的实战
    Ehcache的存储方式Ehcache中对于缓存的存储主要有三种方式:分别是堆内存、非堆内存和磁盘。其中非堆内存是针对于企业版Ehcache才有的功能,它可以不受JavaGC的影响,能够创建很大的缓存。堆内存(MemoryStore)我们通常所有的MemoryStore实际上就是堆内存存储。MemoryStore总是可用的,所有......
  • 安装及使用Nginx
    一、安装及使用Nginx1编译安装nginxcontrib:vim格式文件,修改nginx配置文件的格式,高亮cp-r/opt/nginx-1.18.0/contrib/vim/*/usr/share/vim/vimfiles/conf:配置文件man:man帮助manman/nginx.8不加路径看不了nginx.8文件src:源码包点c点h结尾的文件findsrc......
  • [ABC317G] Rearranging 题解
    取自我的洛谷博客:https://www.luogu.com.cn/blog/SunnyYuan/solution-at-abc317-g借鉴了官方题解思路。思路首先我们要建立一个二分图。对于输入的\(a_{i,j}\),我们可以连接左侧的\(i\)和右侧的\(a_{i,j}\)。比如样例\(1\):注意:左边的\(1,2,3\)和右边的\(1,2......
  • 2nginx平滑升级及信号使用
    nginx平滑升级及信号使用1信号nginx命令支持向其发送信号,实现不同功能nginx当做单独命令使用有以下选项[root@localhost~]#nginx-h 显示帮助信息nginxversion:nginx/1.18.0Usage:nginx[-?hvVtTq][-ssignal][-cfilename][-pprefix][-gdirectives]​​......
  • UE4.27, Packaging failed, "is found in memory and is an export but does not have
    打包时发生如下错误"isfoundinmemoryandisanexportbutdoesnothaveallloadflags"通过查阅论坛,问题原因出在,某类的构造函数里包含xxx->SetChildActorClass(ActualOne) 整理到的解决办法并未完全验证1,愿意手动设定ChildActorComponent的话,将原代码改为xxx->SetC......
  • Struts2输入校验以及错误信息处理(2)——用Struts2定义好的校验框架进行校验
    Struts2的输入校验有两种方式:一种是用Action中定义的validate()方法进行校验,一种是用Struts2定义好的校验框架进行校验。前者里面的逻辑判断要自己写,而后者只需要传递相应的参数即可。不管是哪种方式,程序执行的流程都是一样的,执行流程如下:1、对表单传递过来的数据,先进行类型转换......
  • 聊聊HuggingFace Transformer
    概述参见:聊聊HuggingFace项目组件一个完整的transformer模型主要包含三部分:Config、Tokenizer、Model。Config用于配置模型的名称、最终输出的样式、隐藏层宽度和深度、激活函数的类别等。示例:{"architectures":["BertForMaskedLM"],"attention_probs_dropo......