Gin 框架介绍与快速入门
Gin 框架介绍与快速入门
一、Gin框架介绍
Gin是一个轻量级的Go语言Web框架,它具有高性能和简洁的设计。由于其快速的路由匹配和处理性能,Gin成为Go语言中最受欢迎的Web框架之一。以下是一些Gin框架的主要特点:
1. 快速和轻量级
Gin框架的设计注重性能和效率,采用了一些优化措施,使其成为一个快速而轻量级的框架。
2. 路由和中间件
Gin提供了强大的路由功能,支持参数传递、路由分组等特性。同时,它支持中间件的使用,可以方便地在请求处理过程中执行一系列的操作,比如身份验证、日志记录等。
3. JSON解析
Gin内置了对JSON的解析和序列化的支持,使得处理JSON数据变得简单而高效。
4. 支持插件
Gin允许开发者通过插件来扩展框架的功能,这样可以根据项目的需求进行灵活的定制。
5. Gin相关文档
二、基本使用
1.安装
下载并安装Gin:
go get github.com/gin-gonic/gin@latest
2.导入
将其导入您的代码中:
import "github.com/gin-gonic/gin"
(可选)导入net/http。例如,如果使用常量,则需要这样做http.StatusOK。
import "net/http"
3.第一个Gin 应用
创建示例工程目录 gin-demo
mkdir gin-demo
目录下新建 gin.go 源文件:
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
// 1. 创建一个默认的Gin引擎
server := gin.Default()
// 2. 定义路由:当使用 GET 方法访问路径为 /hello 时,执行回调函数
server.GET("/hello", func(c *gin.Context) {
// 3. 在回调函数中,返回一个字符串 "hello, go" 并设置HTTP状态码为200 OK
c.String(http.StatusOK, "hello, go")
})
// 4. 启动服务,监听在 0.0.0.0:8080 上
server.Run(":8080") // 如果不指定端口号,默认为8080
}
代码解释如下:
server := gin.Default(): 创建一个Gin引擎。gin.Default()返回一个带有默认中间件的Gin引擎,包括Logger和Recovery中间件,用于日志记录和恢复。server.GET("/hello", func(c *gin.Context) {...}): 定义了一个GET方法的路由,当访问路径是/hello时,执行后面的回调函数。这里的回调函数使用gin.Context对象处理HTTP请求和构造HTTP响应。c.String(http.StatusOK, "hello, go"): 在回调函数中,通过c.String方法返回一个字符串 "hello, go" 并设置HTTP状态码为200 OK。server.Run(":8080"): 启动Web服务,监听在0.0.0.0:8080。如果不指定端口号,默认使用8080端口。此时,你可以通过浏览器或HTTP客户端访问http://localhost:8080/hello,将会得到 "hello, go" 的响应。
在项目 gin-demo 目录下,执行 go mod init gin-demo 和 go mod tidy 命令完成依赖导入,将自动生产 go.mod 、go.sum 文件。
go mod init gin-demo
go mod tidy
gin-demo 目录执行命令 go run gin.go 启动 gin Web Server:
go run gin.go
看到输出监听端口了,就认为已经启动成功了。

最后通过浏览器访问: http://localhost:8080/hello,就会输出如下:

三、应用举例
以下项目都是使用 Gin 框架开发的:
- gorush:Go 编写的通知推送服务器。
- fnproject:容器原生,云 serverless 平台。
- photoprism:基于 Go 和 Google TensorFlow 实现的个人照片管理工具。
- krakend:拥有中间件的超高性能 API 网关。
- picfit:Go 编写的图像尺寸调整服务器。
- gotify:基于 WebSocket 进行实时消息收发的简单服务器。
- cds:企业级持续交付和 DevOps 自动化开源平台。
四、Gin 入门核心
1.gin.Engine
在 Gin 里面,一个 Web 服务器被抽象成为 Engine。你可以在一个应用里面创建多个 Engine 实例,监听不同的端口。Engine 承担了路由注册、接入 middleware 的核心职责。

如图,它组合了 RouterGroup,RouterGroup 才是实现路由功能的核心组件。

2.gin.Context
gin.Context 是 Gin 里面的核心类型。应该说,你日常最经常的就是和它打交道。
它的字面意思就是“上下文”,在 Gin 里面,它的核心职责是:
- 处理请求
- 返回响应

如图,Request 代表的就是请求,Writer 代表的就是响应。

Gin 框架介绍与快速入门的更多相关文章
- uni-app跨平台框架介绍和快速入门
前言: 首先今天主要介绍的是一个多平台的前端框架uni-app,关于多平台的前端框架网上有很多成熟的解决方案比如说Taro,React Native,Flutter等这些都是一些非常优秀的前端跨平台的 ...
- 实体框架(Entity Framework)快速入门--实例篇
在上一篇 <实体框架(Entity Framework)快速入门> 中我们简单了解的EF的定义和大体的情况,我们通过一步一步的做一个简单的实际例子来让大家对EF使用有个简单印象,看操作步骤 ...
- Gin框架介绍及使用
Gin是一个用Go语言编写的web框架.它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍. 如果你是性能和高效的追求者, 你会爱上Gin. ...
- Mybatis第一篇【介绍、快速入门、工作流程】
什么是MyBatis MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...
- 面试简历书写、Flask框架介绍与快速使用、Flask演示登录页面、用户信息页面案例
今日内容概要 面试简历编写 Flask框架介绍与安装 内容详细 1.面试简历编写 # 千万不要几个小时把简历凑出来 几天到一周 # 有没有面试机会,取决于简历写得怎么样 简历写好是第一步 # 投简历的 ...
- Gin框架介绍与使用
Gin // 初识 Gin框架 //下载(可能会下载不全.缺什么get什么即可) //go get -u -v github.com/gin-gonic/gin package main import ...
- Keras深度学习框架安装及快速入门
1.下载安装Keras 如果你是安装的Anaconda组合套件,可以直接在Prompt上执行安装命令:pip install keras 注意:最下面为Successfully...表示安装成功! 2 ...
- 实体框架(Entity Framework)快速入门
实体 框架 (Entity Framework )简介 实体框架Entity Framework 是 ADO .NET 中的一组支持 开发 面向数据的软件应用程序的技术.是微软的一个ORM框架. OR ...
- Python中定时任务框架APScheduler的快速入门指南
前言 大家应该都知道在编程语言中,定时任务是常用的一种调度形式,在Python中也涌现了非常多的调度模块,本文将简要介绍APScheduler的基本使用方法. 一.APScheduler介绍 APSc ...
- Quartz.NET开源作业调度框架系列(一):快速入门step by step
Quartz.NET是一个被广泛使用的开源作业调度框架 , 由于是用C#语言创建,可方便的用于winform和asp.net应用程序中.Quartz.NET提供了巨大的灵活性但又兼具简单性.开发人员可 ...
随机推荐
- CIO们开始将软件供应链升级为安全优先级top
开源之所以在软件开发中大量使用的原因是它提供了经过良好测试的构建块,可以加速复杂应用程序和服务的创建.但是第三方软件组件以及包和容器的便利性同时也带来了风险--软件供应链攻击. 软件供应链攻击日益普遍 ...
- 克服 ClickHouse 运维难题:ByteHouse 水平扩容功能上线
前言 对于分析型数据库产品,通过增加服务节点实现集群水平扩容,并提升集群性能和容量,是运维的必要手段. 但是对于熟悉 ClickHouse 的工程师而言,听到"扩容"二字一定会头疼 ...
- 复杂 A/B 实验如何设计?火山引擎 DataTester 帮你落地!
数字化转型时代,越来越多企业将目光聚焦于"数据驱动增长"的实践上,A/B 实验则在其中扮演着愈加重要的角色. A/B 实验又称对照试验,但并非人们字面认知的"抛出 A 和 ...
- 如何通过命令部署.Net
如何通过命令部署.net3.5组件服务 问题:系统安装.net一直报错,无法安装该功能. 问题现象: 终极解决方案: 将windows10系统镜像文件拷贝在硬盘或者U盘中,鼠标右击选择"装载 ...
- MPI Maelstrom POJ - 1502 ⭐⭐ 【Dijkstra裸题】
MPI Maelstrom POJ - 1502 实验室有很多台计算机,由于每个人计算机的性能不同,导致计算机之间发送信息的速度不同,所以花费时间不同. 消息从第一台电脑发送到第二台电脑后,这两台电脑 ...
- L3-001. 凑零钱-PAT团体程序设计天梯赛GPLT(01背包,动态规划)
韩梅梅喜欢满宇宙到处逛街.现在她逛到了一家火星店里,发现这家店有个特别的规矩:你可以用任何星球的硬币付钱,但是绝不找零,当然也不能欠债.韩梅梅手边有 104 枚来自各个星球的硬币,需要请你帮她盘算一下 ...
- jdk(jvm)调式工具
JConsole 可视化工具介绍一. JConsole介绍1.1 JConsole描述Jconsole (Java Monitoring and Management Console),一种基于JMX ...
- OpenSCA技术原理之npm依赖解析
本文主要介绍基于npm包管理器的组件成分解析原理. npm 介绍 npm(全称Node Package Manager)是Node.js的预设软件包管理器. npm的依赖管理文件是package.js ...
- Serverless 年终技术盘点 :工业、学术、社区遍地开花,国内厂商迅速卡位
作者 | 刘宇(花名:江昱) 2021 年,Serverless 架构在权威咨询机构 Forrester 所发布的 < The Forrester Wave: Function-As-A-S ...
- 黑马vue学习笔记
1.v-model原理 2.数组相关API 3.prop命名规则: 4.非父子组件传值-事件中心