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

在这里插入图片描述

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

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

🏆 作者简介:景天科技苑
🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,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/
在这里插入图片描述

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})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/57044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

aws(学习笔记第六课) AWS的虚拟私有,共有子网以及ACL,定义公网碉堡主机子网以及varnish反向代理

aws(学习笔记第六课) AWS的虚拟私有,共有子网以及ACL,定义公网碉堡主机子网以及varnish反向代理 学习内容: AWS的虚拟私有,共有子网以及ACL定义公网碉堡主机子网,私有子网和共有子网以及varnish反向代理 1. AWS的虚拟…

springboot051医院管理系统(论文+源码)_kaic

医院管理系统 摘要 随着信息互联网信息的飞速发展,医院也在创建着属于自己的管理系统。本文介绍了医院管理系统的开发全过程。通过分析企业对于医院管理系统的需求,创建了一个计算机管理医院管理系统的方案。文章介绍了医院管理系统的系统分析部分&#…

Gitlab 完全卸载–亲测可行

1、停止gitlab gitlab-ctl stop2.卸载gitlab(注意这里写的是gitlab-ce) rpm -e gitlab-ce 3、查看gitlab进程 ps aux | grep gitlab 4、杀掉第一个进程(就是带有好多.............的进程) 5、删除所有包含gitlab文件 find / …

配置文件get调用为null

生成get方法调用显示为null 修改get方法去掉static调用成功

LCWLAN设备的实际使用案例

我们的LCWLAN设备在实际使用中以裸板的形式放在客户的智能总线控制器中,客户的 智能总线刀片灯,柔性灯货架,柔性感应钢网柜以及智能电子料架等设备都是接到总线控制 器中,然后总控制器通过CAN总线和我们的LCWLAN设备连接&#xff…

两个表格讲清日语形容词怎么用!柯桥小语种学习零基础日语培训

い形容词 1、敬体形和简体形 _ 肯定形 否定形 敬体现在时 词干+い+です 词干+くない+です 敬体过去时 词干+い+でした 词干+くない+です/ありません 简体现在时…

基于Qt的雷达航迹控件(解决QWidget绘制多点卡顿问题)

:详细讲解 在本篇文章中,我们将详细探讨如何使用Qt创建一个雷达轨迹系统。该系统可以模拟雷达轨迹的显示、处理用户的交互并管理轨迹选中状态。通过这篇文章,您将了解到自定义类 RadarTrackItem、RadarTrackManager、OverlayWidget 和 Radar…

大数据-180 Elasticsearch - 原理剖析 索引写入与近实时搜索

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

美摄科技云服务解决方案,方案成熟,接入简单

美摄科技作为视频处理领域的先锋,凭借其强大的技术实力和深厚的行业经验,推出了成熟的云服务解决方案,为轻量化视频制作开辟了全新的道路。 一、成熟方案,接入无忧 美摄科技云服务解决方案的最大亮点在于其成熟度和易用性。我们…

Vulnhub打靶-matrix-breakout-2-morpheus

基本信息 靶机下载:https://pan.baidu.com/s/1kz6ei5hNomFK44p1QT0xzQ?pwdy5qh 提取码: y5qh 攻击机器:192.168.20.128(Windows操作系统) 靶机:192.168.20.0/24 目标:获取2个flagroot权限 具体流程 …

前端 js 处理一个数组 展示成层级下拉样式

好记性不如赖笔头; 前端开发中,不管是什么时候都会遇到select 下拉框的使用,一般情况下,数据处理后端都会处理好。前端一般使用相应技术栈所推荐的公共组件就可以了。 但是一般也有后端不处理的数组,需要前端自己处理成…

【热门主题】000007 网络安全:守护数字世界的坚固防线

前言:哈喽,大家好,今天给大家分享一篇文章!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【热门主题】000007 网络安全:守护数字世界的坚固防线一、网…

精准赋能,助力成长 | 亲笔签数字科技“笔迹大计”第一期培训圆满收官

创新驱动,合作共赢。近日,亲笔签数字科技成功举办第一期“笔迹大计”专业培训,为新入职渠道管理员工和新签约渠道伙伴精准赋能,进一步提升业务能力水平。 精心筹备,全面覆盖 本期“笔迹大计”培训内容全面&#xff0c…

当LangGraph遇上Mem0:如何让你的AI Agent具有更智能的记忆与个性化的体验?

AI Agent(智能体)的记忆(Memory)被认为是一项必备的基础能力,它用来提取、存储会话中的重要信息并用于后续的检索与使用。可以把记忆简单地分成短期记忆与长期记忆两种,用来“记住”不同类型的信息&#xf…

Navicat连接openGauss数据库详细指南

文章目录 环境准备总体的技术路线root权限下,防火墙的关闭切换用户修改文件修改文件pg_hba.conf修改文件postgresql.conf重启数据库 创建用于连接的数据库和数据库用户使用Navicat连接 资料参考 环境准备 自行安装Navicat连接工具(自己找破解版)已经安装好openGaus…

【文心智能体 | AI大师工坊】如何使用智能体插件,完成一款购物类智能体的开发,来体验一下我的智能体『科技君Tom』

目录 1.1、智能体运行效果1.2、创作灵感来源智能体平台拥有个人化且人性化的大致框架,可以让小白也能搭建出一个智能体其次是拥有丰富的插件,可以更加快速的得到自己想要的效果~ 1.3、如何制作智能体常见问题与解决方案关于人设与回复逻辑插件使用模型的…

【Linux内核】eBPF基础篇

系列综述: 💞目的:本系列是个人整理为了学习ebpf机制的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于–知乎ebpf专栏文章–进行的,每个知识点的修正和深…

python获取当前鼠标位置的RGB值

效果 依赖 pip install Pillow pyautoguisudo apt install gnome-screenshot代码 import pyautogui import timedef get_rgb_at_mouse():try:while True:# 获取当前鼠标的位置x, y pyautogui.position()# 截取当前屏幕图像screenshot pyautogui.screenshot()# 获取鼠标位置…

小O睡眠省电调研

摘要 AI 预测睡眠 断网 杀应用为主的策略 UI 睡眠识别 AI 识别 将亮灭屏、音频、上传下载、运动状态数据存到xml中,供预测分析 睡眠策略 OPPO 睡眠省电 1. sOSysNetControlManagerNewInstance:断网(wifi\mobiledata)2. S…

【D3.js in Action 3 精译_036】4.1 DIY 实战:在 Observable 平台实现 D3折线图坐标轴的绘制

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一部分 D3.js 基础知识 第一章 D3.js 简介(已完结) 1.1 何为 D3.js?1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践(上)1.3 数据可…