Gin 框架介绍与快速入门

news2025/6/4 1:47:52

Gin 框架介绍与快速入门

文章目录

  • Gin 框架介绍与快速入门
    • 一、Gin框架介绍
      • 1. 快速和轻量级
      • 2. 路由和中间件
      • 3. JSON解析
      • 4. 支持插件
      • 5. Gin相关文档
    • 二、基本使用
      • 1.安装
      • 2.导入
      • 3.第一个Gin 应用
    • 三、应用举例
    • 四、Gin 入门核心
      • 1.gin.Engine
      • 2.gin.Context

一、Gin框架介绍

Gin是一个轻量级的Go语言Web框架,它具有高性能和简洁的设计。由于其快速的路由匹配和处理性能,Gin成为Go语言中最受欢迎的Web框架之一。以下是一些Gin框架的主要特点:

1. 快速和轻量级

Gin框架的设计注重性能和效率,采用了一些优化措施,使其成为一个快速而轻量级的框架。

2. 路由和中间件

Gin提供了强大的路由功能,支持参数传递、路由分组等特性。同时,它支持中间件的使用,可以方便地在请求处理过程中执行一系列的操作,比如身份验证、日志记录等。

3. JSON解析

Gin内置了对JSON的解析和序列化的支持,使得处理JSON数据变得简单而高效。

4. 支持插件

Gin允许开发者通过插件来扩展框架的功能,这样可以根据项目的需求进行灵活的定制。

5. Gin相关文档

  • GitHub 地址:https://github.com/gin-gonic/gin
  • 中文文档:https://gin-gonic.com/zh-cn/docs/

二、基本使用

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
}

代码解释如下:

  1. server := gin.Default(): 创建一个Gin引擎。gin.Default()返回一个带有默认中间件的Gin引擎,包括Logger和Recovery中间件,用于日志记录和恢复。
  2. server.GET("/hello", func(c *gin.Context) {...}): 定义了一个GET方法的路由,当访问路径是/hello时,执行后面的回调函数。这里的回调函数使用gin.Context对象处理HTTP请求和构造HTTP响应。
  3. c.String(http.StatusOK, "hello, go"): 在回调函数中,通过c.String方法返回一个字符串 “hello, go” 并设置HTTP状态码为200 OK。
  4. server.Run(":8080"): 启动Web服务,监听在0.0.0.0:8080。如果不指定端口号,默认使用8080端口。此时,你可以通过浏览器或HTTP客户端访问http://localhost:8080/hello,将会得到 “hello, go” 的响应。

在项目 gin-demo 目录下,执行 go mod init gin-demogo 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 的核心职责。

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

2.gin.Context

gin.ContextGin 里面的核心类型。应该说,你日常最经常的就是和它打交道。

它的字面意思就是“上下文”,在 Gin 里面,它的核心职责是:

  • 处理请求
  • 返回响应

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

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

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

相关文章

免费搭建知识付费平台:让知识更有价值

明理信息科技知识付费saas租户平台 在当今的知识经济时代,一个高效、便捷的知识服务平台对于企业和个人至关重要。然而,市面上的众多知识服务平台中,许多产品存在高昂的费用、无用功能的堆砌、无法定制化等问题,让用户进退两难&…

科研+临床观摩|牙科医生公派美国从事访问学者交流

很多临床医学专业的访问学者希望在访学从事科研的同时,能到医院进行临床观摩。对于这些申请者的要求,我们会尽量满足。本案例中的T医生,口语较弱,担心英语面试,最终我们为其取得了田纳西大学健康科学中心的邀请函&…

select for update会锁表还是行锁还是其它

select for update含义 select查询语句是不会加锁的,但是 select for update除了有查询的作用外,还会加锁呢,而且它是悲观锁哦。至于加了是行锁还是表锁,这就要看是不是用了索引/主键啦。 没用索引/主键的话就是表锁&#xff0c…

如何精准避雷网络安全培训机构?

随着信息化时代的网络攻击越来越多,网络黑产规模日益庞大,网络安全形势越来越严峻。企业和政府部门的网络化程度逐渐提高,日常运营已普遍依赖于互联网,若无法保障网络安全,将会带来重大的损失。并且数据作为企业和机构…

新手第一次在linux上用git上传代码到仓库全过程

目录 背景: 过程: -1.去github.com自己的账号先建个仓库repository 0.命令行输入 git version 看下有无安装git 1.git init 初始化了一个Git仓库,你可以 ls -a 看见这个隐藏的目录 3.git add . 添加要上传的文件到Git的暂存区&#xff0…

three.js实现电子围栏效果(纹理贴图)

three.js实现电子围栏效果&#xff08;纹理贴图&#xff09; 实现步骤 围栏的坐标坐标转换为几何体顶点&#xff0c;uv顶点坐标加载贴图&#xff0c;移动 图例 代码 <template><div class"app"><div ref"canvesRef" class"canvas-…

数字化助力,聚道云软件连接器实现软件公司人事信息自动同步

客户介绍 某软件行业有限公司是一家专注于为公共交通领域提供智能化解决方案的高科技企业。公司依托先进的云计算和大数据技术&#xff0c;为公交企业提供全面的数字化转型服务&#xff0c;助力提升公共交通运营效率和服务质量。 添加图片注释&#xff0c;不超过 140 字&#…

西电期末1019.校验和计算

一.题目 二.分析与思路 难点在于逐个取出数据的每一位&#xff0c;我们编写f函数&#xff0c;使用了一个while函数&#xff0c;每次循环中用取余的运算符找到数据的个位累加&#xff0c;再将n/10&#xff0c;如此n便被去除了个位&#xff0c;十位就成了新的个位&#xff0c;最…

error:0308010C:digital envelope routines::unsupported 前端项目错误

直接启动命令中增加&#xff1a; SET NODE_OPTIONS--openssl-legacy-provider && vue-cli-service serve

ArrayList学生管理系统

文章目录 1.ArrayList集合和数组的优势对比&#xff1a;1.1 ArrayList类概述1.2 ArrayList类常用方法1.2.1 构造方法1.2.2 成员方法1.2.3 示例代码 1.3 ArrayList存储字符串并遍历1.3.1 案例需求1.3.2 代码实现 1.4 ArrayList存储学生对象并遍历1.4.1 案例需求1.4.2 代码实现 1…

开启物联网的魔法之门 - 深入探索发布/订阅模式

文章目录 MQTT 发布/订阅模式MQTT 发布/订阅中的消息路由MQTT 与 HTTP 请求响应MQTT 与消息队列Paho Java 使用示例结语 MQTT 发布/订阅模式 发布订阅模式&#xff08;Publish-Subscribe Pattern&#xff09;是一种消息传递模式&#xff0c;它将发送消息的客户端&#xff08;发…

Jetson Orin Nano_初识,关于板载资源

1、开发板上有什么 英伟达Jetson Orin Nano&#xff0c;内存8GB&#xff0c;算力40TOPS&#xff08;CPU&#xff09;固态硬盘128GB&#xff08;系统镜像以及文件存储&#xff09;千兆以太网口、无线网卡&#xff08;用来上网&#xff09;4个USB&#xff08;用来接鼠标键盘&…

es6中import * as导入方式

es6中import * as导入方式 一、问题和解决方法二、简介import * as三、ES6 模块化语法导入导出1.导入2.导出 一、问题和解决方法 问题报错: export ‘default’ (imported as ‘XLSX’) was not found in ‘xlsx’ (possible exports: CFB, SSF, parse_xlscfb, parse_zip, read…

遥测终端机:数据世界的千里眼与顺风耳

在当今这个信息爆炸的时代&#xff0c;数据的重要性日益凸显。如何高效、准确地收集、传输和处理这些数据&#xff0c;成为了众多企业和研究机构关注的焦点。而遥测终端机&#xff0c;正是这样一种解决这一问题的强大工具。 遥测终端机&#xff0c;顾名思义&#xff0c;是一种…

java SSM水质历史数据可视化设计myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM水质历史数据可视化设计是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主…

Mybatis源码基本原理--XML版

文章目录 mybatis是什么架构设计首先建立起Mapper的代理工程和代理映射器的注册和使用XML文件解析数据源解析、创建和使用SQL执行器&#xff08;Executor&#xff09;的定义与实现SQL解析参数处理器&#xff1a;策略模式实现封装处理结果注解 mybatis 是什么 MyBatis 是一款优…

中国5米分辨率坡度数据

中国5米分辨率坡度数据 坡度是地表单元陡缓的程度&#xff0c;通常把坡面的垂直高度和水平距离的比值称为坡度。坡度的表示方法有百分比法、度数法、密位法和分数法四种&#xff0c;其中以百分比法和度数法较为常用。 中国5米分辨率坡度数据集&#xff0c;利用5米分辨率DEM数据…

多肉植物,预计到2025我国市场规模将达到140亿元人民币

多肉植物是一种新兴的盆栽植物&#xff0c;由于造型各异、易于养殖、低维护难度等优点&#xff0c;在全球市场和中国市场受到了越来越多消费者的追捧。全球市场分析 从全球市场来看&#xff0c;多肉植物市场规模正在逐步扩大。各种形态各异的多肉植物受到消费者的喜爱&#xff…

trino 433 开启 HTTPS

什么要开启https 因为开始password验证要求必须得https。 摘要 trino节点之间可以不用开启SSL&#xff0c;对外访问开启SSL。如果自备证书可以直接配置到trino的config文件&#xff0c;如果没有证书可以使用mkcert生成自签证书&#xff08;客户端需要信任证书&#xff0c;尤…