【Golang】Gin框架:Go语言中的轻量级Web框架

news/2024/10/21 17:09:38/

在这里插入图片描述

✨✨ 欢迎大家来到景天科技苑✨✨

🎈🎈 养成好习惯,先赞后看哦~🎈🎈

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。
🏆《博客》:Python全栈,Golang开发,PyQt5和Tkinter桌面开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生K8S,linux,shell脚本等实操经验,网站搭建,数据库等分享。

所属的专栏:Go语言开发零基础到高阶实战
景天的主页:景天科技苑

在这里插入图片描述

文章目录

  • Go语言web框架Gin
    • 一、认识Gin
      • 1. 什么是Gin
      • 2. 同类框架对比分析
    • 二、我们为什么要学习web框架
    • 三、环境的准备和搭建
      • 1. 文档和go环境
      • 2. 项目搭建过程
    • 四、Gin安装使用
      • 1. 安装gin
      • 2. Gin框架的基本使用

Go语言web框架Gin

一、认识Gin

1. 什么是Gin

Gin是一个用Go语言编写的高性能HTTP web框架,它提供了快速的HTTP路由、中间件支持以及JSON编码等功能。
Gin框架以其简洁的API和高效的性能著称,非常适合用来构建RESTful API和中小型Web应用。

  • Gin:Go 语言编写的 Web 框架,以更好的性能实现类似 Martini 框架的 API。
  • Gin是一个golang的net/http库封装的web微框架,封装比较优雅,API友好,源码注释比较明确。具有快速灵活,容错方便等特点。

2. 同类框架对比分析

  • Beego:开源的高性能 Go 语言 Web 框架。

  • beego是一个快速开发Go应用的http框架,go 语言方面技术大牛。beego可以用来快速开发API、Web、后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado、sinatra、flask这三个框架,但是结合了Go本身的一些特性(interface、struct继承等)而设计的一个框架。

  • Iris:全宇宙最快的 Go 语言 Web 框架。完备 MVC 支持,未来尽在掌握。

    Iris是一个快速,简单但功能齐全的和非常有效的web框架。提供了一个优美的表现力和容易使用你的下一个网站或API的基础。

二、我们为什么要学习web框架

作为初学者很多时候,在学习一个框架的时候,一定要搞清楚我们为什么要学习它,这个非常的重要。

随着互联网技术的发展,在早期我们大部分情况下,编写的都是静态网页html。如果有100篇文章就要编写一百篇与之对应的静态网页。这样是非常痛苦的。
于是乎开始有了动态网页,动态网页必须要结合服务器端的技术,比如:Go、Java等。有了这些服务端语言的加持这样就可以完成一个静态网页到动态网页的转化。如下图:
在这里插入图片描述

  • 如果假设我们这里选择的是:gin和gorm。
  • 用户在浏览器访问地址,这个地址其实是服务器提供。用于寻址一样。先找到服务器在哪里,我要访问服务器的什么
  • 如果根据ip找到地址以后,通过port找到服务器的服务,原来你是一个go的web服务。就开始进入到程序中把对应的逻辑去执行(这个部分未来是我们使用gin定义路由的对应的要执行的事情)
  • 在执行的逻辑中,我们肯定会调用gorm把数据库存储起来的数据,查询出来。
  • 把查询出来的数据,和你定义好的模板开始用对应的模板语法进行渲染和碰撞。
  • 最后就呈现出来了,一个完整的静态网页。
  • 这也就是经典的:B/S架构。B代表的是Broswer浏览器,S代表的是:Server是服务端也就是我们学习的GO

三、环境的准备和搭建

1. 文档和go环境

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

  • 版本的要求:最低版本要求:1.16
    在这里插入图片描述

2. 项目搭建过程

1: 创建jt-gin工程
在这里插入图片描述

2:创建项目的mod文件

这个文件的作用就是:可以用来记录你未来安装的模块。方便进行统一管理。
在这里插入图片描述

创建好以后:
在这里插入图片描述

3:配置项目的环境
在这里插入图片描述

检查GOROOT
在这里插入图片描述

检查GOPATH
在这里插入图片描述
在这里插入图片描述

添加下载代理,这是七牛云的代理,它把go的一些常用的库缓存到它的服务器上,配了代理直接就可以从国内下载,不配置的话大概率下载第三方库会失败
复制GOPROXY=https://goproxy.cn,direct 放入到Enironment中如下:
在这里插入图片描述

一切准备就绪,接下来开始安装gin

四、Gin安装使用

Gin 官方文档地址:https://gin-gonic.com/zh-cn/docs/
在这里插入图片描述

gin_117">1. 安装gin

在使用Gin框架之前,首先需要确保你的开发环境中已经安装了Go语言。访问Go官网下载适合你操作系统的安装包,并按照提示完成安装。配置好环境变量后,可以通过以下命令来安装Gin框架:
在这里插入图片描述

在终端命令行执行如下命令:

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

这条命令会下载并安装Gin框架的最新版本到你的Go工作区中。
在这里插入图片描述

检查是否安装成功
如果看到这个就说明安装成功了
在这里插入图片描述

2. Gin框架的基本使用

创建第一个Gin程序
新建一个HelloWorld.go文件,参考以下代码编写一个基本的Gin程序:

官网有提供
在这里插入图片描述

package mainimport ("github.com/gin-gonic/gin"
)func main() {// 创建gin服务,创建一个默认的路由引擎ginServer。然后可以根据ginServer.GET,ginServer.ROST,ginServer.DELETE等内置函数处理客户端发来的http请求。ginServer := gin.Default()// localhost:8088/hello// 处理请求的函数 *gin.ContextginServer.GET("/hello", func(c *gin.Context) {// c.JSON:响应给客户端JSON格式的数据 func (c *Context) JSON(code int, obj any)// gin.H : 参数 key value// gin.H 是一个便捷的快捷方式,你也可以直接使用 map[string]interface{} 来代替它c.JSON(200, gin.H{"message": "Hello world!"})})// 启动HTTP服务,可以修改端口。默认是8080端口ginServer.Run(":8088")
}

这段代码首先导入了Gin包,然后通过gin.Default()创建了一个默认的Gin引擎实例,它包含了默认的中间件(如日志记录和错误恢复)。
接着,使用ginServer.GET(“/hello”)定义了一个GET请求的路由,当客户端请求根路径时,会执行匿名函数,其中c类型的gin.Context指针就是返回的内容,一般可以用c.HTML定义返回html文件,或者c.JSON返回JSON类型文件。JSON传参的格式是状态码code和空接口object;HTML是状态码code,模板名称name和空接口object。我们这里返回一个json字符串"Hello world!"。最后,通过ginServer.Run()启动Gin服务,我们监听8088端口。
默认监听在8080端口。
在这里插入图片描述

运行我们的框架,浏览器访问
在这里插入图片描述

浏览器访问,能拿到数据,运行成功
在这里插入图片描述

关于gin.H看下源码,就是 map[string] any
在这里插入图片描述
引入 gin.H 这个东西可以简化生成 json 的方式,如果需要嵌套 json,那么嵌套 gin.H 就可以了。例子:

c.JSON(http.StatusOK, gin.H{"status":  gin.H{"code": http.StatusOK,"status":      "登录成功",},"message": message})
gin:auto;margin-top:12px" class="blog-extension-box">

http://www.ppmy.cn/news/1540844.html

相关文章

Centos安装Nginx 非Docker

客户的机器属于 Centos7 系列,由于其较为陈旧,2024开始众多镜像和软件源都已失效。此篇文章将详细记录在 Centos7 操作系统上从零开始安装 Nginx 的整个流程。 本文Nginx是安装在/usr/local/nginx下 详细步骤如下: 准备Nginx安装包&#x…

Java之异常体系

异常体系分类: Error 错误Exception 异常错误和异常的继承关系: 所有错误的父类为 Error 类所有异常的父类为 Exception 类Error 和 Exception 的父类为 ThrowableThrowable:代表可抛出错误类型: 编译错误:由编译器找到…

安装配置sqoop(超详细)

前言 sqoop就是sql-to-hadoop,说通俗点,我们用到最多的就是mysql与hive之间的数据传递,而hive是依靠hadoop运行的,所以要再mysql和hive之间互相传递数据,就必须要安装sqoop 一、准备 我们要准备sqoop的安装包&#…

springboot+uinapp基于Android的固定资产借用管理平台

文章目录 前言项目介绍技术介绍功能介绍核心代码数据库参考 系统效果图论文效果图 前言 文章底部名片,获取项目的完整演示视频,免费解答技术疑问 项目介绍 固定资产借用管理平台设计的目的是为用户提供使用申请、故障报修、设备归还、意见反馈等管理方…

大数据-174 Elasticsearch Query DSL - 全文检索 full-text query 匹配、短语、多字段 详细操作

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

【React】useLayoutEffect、useInsertionEffect

useLayoutEffect useLayoutEffect和useEffect有什么区别呢? useEffect的cb,准确来说,是异步调用的,会等主线程任务执行完成,D0M更新,JS执行完成,视图绘制完成,才执行。 useLayout…

【Python】基础--文件处理

在Python中,文件处理涉及打开文件、读取文件内容、写入文件以及关闭文件等操作。以下是有关文件处理的基本知识: 1. 文件的打开 在Python中,可以使用内置的 open() 函数打开文件。open() 函数的基本语法如下: file_object ope…

一文详解AI模型部署及工业落地方式

最近在复盘今年上半年做的一些事情,不管是训练模型、部署模型搭建服务,还是写一些组件代码等,零零散散是有一些产出。 虽然有了一点点成果,但仍觉着缺点什么。作为深度学习****算法工程师,训练模型和部署模型是最基本…