当前位置: 首页 > news >正文

【Gin实战教程】快速入门

Gin是一个轻量级的Web框架,使用Go语言开发。它具有高性能、易用性和灵活性的特点,是构建可扩展的Web应用程序的理想选择。 首先,Gin是一个高性能的框架。它基于Go语言的原生HTTP包进行开发,利用了Go语言的并发特性和协程模型,能够处理大量的并发请求。Gin使用了基于路由的设计模式,可以轻松地处理各种HTTP请求和路由匹配,提供了快速的响应和高效的处理能力。 其次,Gin具有简单易用的特点。它提供了简洁的API和清晰的文档,使得开发者可以快速上手并构建出高质量的Web应用。Gin的API设计简洁明了,提供了丰富的中间件支持,可以方便地实现各种功能,如路由分组、参数绑定、表单验证等。同时,Gin还提供了强大的错误处理和日志记录功能,方便开发者进行调试和错误追踪。
在这里插入图片描述

  1. 介绍
    Gin 是一个用 Golang编写的 高性能的web 框架, 由于http路由的优化,速度提高了近 40 倍。 Gin的特点就是封装优雅、API友好。

Gin的一些特性:

快速
基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能。
支持中间件
传入的 HTTP 请求可以由一系列中间件和最终操作来处理。 例如:Logger,Authorization,GZIP,最终操作 DB。
Crash 处理
Gin 可以 catch 一个发生在 HTTP 请求中的 panic 并 recover 它。这样,你的服务器将始终可用。例如,你可以向 Sentry 报告这个 panic!
JSON 验证
Gin 可以解析并验证请求的 JSON,例如检查所需值的存在。
路由组
更好地组织路由。是否需要授权,不同的 API 版本…… 此外,这些组可以无限制地嵌套而不会降低性能。
错误管理
Gin 提供了一种方便的方法来收集 HTTP 请求期间发生的所有错误。最终,中间件可以将它们写入日志文件,数据库并通过网络发送。
内置渲染
Gin 为 JSON,XML 和 HTML 渲染提供了易于使用的 API。
可扩展性
新建一个中间件非常简单。
2.下载并安装
首先需要安装golang的环境(略)

安装gin

go get -u github.com/gin-gonic/gin
3.简单的例子
新建main.go文件
package main
// 导入gin包
import “github.com/gin-gonic/gin”
// 入口函数
func main() {
// 初始化一个http服务对象
r := gin.Default()
// 设置一个get请求的路由,url为/hello, 处理函数(或者叫控制器函数)是一个闭包函数。
r.GET(“/hello”, func(c *gin.Context) {
// 通过请求上下文对象Context, 直接往客户端返回一个json
c.JSON(200, gin.H{
“message”: “hello world”,
})
})
r.Run() // 监听并在 0.0.0.0:8080 上启动服务
}
访问localhost:8080/hello
响应
{
“message”: “hello world”
}
自定义访问的address和port
package main
import (
“fmt”
“github.com/gin-gonic/gin”
)
//定义address和port
const (
address string = “0.0.0.0”
port int = 80
)
func main() {
// 初始化一个http服务对象
r := gin.Default()
// 设置一个get请求的路由,url为/hello, 处理函数(或者叫控制器函数)是一个闭包函数。
r.GET(“/hello”, func(c *gin.Context) {
// 通过请求上下文对象Context, 直接往客户端返回一个json
c.JSON(200, gin.H{
“message”: “hello world”,
})
})
r.Run(fmt.Sprintf(“%s:%d”, address, port)) // 监听并在 0.0.0.0:80 上启动服务
}
访问localhost/hello
响应
{
“message”: “hello world”
}

相关文章:

【Gin实战教程】快速入门

Gin是一个轻量级的Web框架,使用Go语言开发。它具有高性能、易用性和灵活性的特点,是构建可扩展的Web应用程序的理想选择。 首先,Gin是一个高性能的框架。它基于Go语言的原生HTTP包进行开发,利用了Go语言的并发特性和协程模型&…...

WPF真入门教程26--项目案例--欧姆龙PLC通讯工具

1、案例介绍 前面已经完成了25篇的文章介绍,概括起来就是从0开始,一步步熟悉了wpf的概念,UI布局控件,资源样式文件的使用,MVVM模式介绍,命令Command等内容,这节来完成一个实际的项目开发&#…...

C++ OpenGL 3D Game Tutorial 2: Making OpenGL 3D Engine学习笔记

视频地址https://www.youtube.com/watch?vPH5kH8h82L8&listPLv8DnRaQOs5-MR-zbP1QUdq5FL0FWqVzg&index3 一、main类 接上一篇内容&#xff0c;main.cpp的内容增加了一些代码&#xff0c;显得严谨一些&#xff1a; #include<OGL3D/Game/OGame.h> #include<i…...

Redis小计(4)

目录 1.Set和Get操作 2.mset和mget 3.mset&#xff0c;mget&#xff0c;set后加参数的优点 4.incr,incrby&#xff0c;incrbyfloat 1.Set和Get操作 flushall&#xff1a;清除所有k-v键值对。&#xff08;删库跑路小技巧&#xff09; set k v[ex | px]&#xff1a;设置超时…...

【React】常用Hook函数的梳理和总结(第二篇)

1. 前言 本篇梳理和总结React中常用的Hook函数。 欢迎大家来到Hook的世界&#xff0c;真的贼好用~ 2. 常用Hook函数 Hook说明示例useState(initialState) 功能&#xff1a;为函数组件添加状态变量&#xff0c;输入可是基本数据类型或引用数据类型&#xff0c;也可以是不带参数…...

【JaveWeb教程】(15) SpringBootWeb之 响应 详细代码示例讲解

目录 SpringBootWeb请求响应2. 响应2.1 ResponseBody2.2 统一响应结果2.3 案例2.3.1 需求说明2.3.2 准备工作2.3.3 实现步骤2.3.4 代码实现2.3.5 测试2.3.6 问题分析 SpringBootWeb请求响应 2. 响应 前面我们学习过HTTL协议的交互方式&#xff1a;请求响应模式&#xff08;有…...

「 PyMuPDF专栏 」PyMuPDF为PDF文件添加注释

文章目录 一、PyMuPDF的安装与基本使用1. 安装PyMuPDF库的方法2. 导入PyMuPDF库二、新建PDF文档1. 创建一个空白的PDF文档三、添加注释1. 导入库并打开PDF文件2. 选择要添加注释的页面3. 创建并添加注释3.1. 文本注释3.1.1. 完整代码3.1.2. 注释效果图3.2. 高亮注释3.2.1. 完整…...

5 - 视图|存储过程

视图&#xff5c;存储过程 视图视图基本使用使用视图视图进阶 存储过程创建存储过程存储过程进阶存储过程参数循环结构 视图 视图是虚拟存在的表 表头下的数据在真表里 表头下的数据存储在创建视图时 在select命令访问的真表里 优点&#xff1a; 安全数据独立简单 用户无需关…...

系统学习Python——警告信息的控制模块warnings:警告过滤器-[基础知识]

分类目录&#xff1a;《系统学习Python》总目录 警告过滤器控制着警告是否被忽略、显示或转为错误&#xff08;触发异常&#xff09;。 从概念上讲&#xff0c;警告过滤器维护着一个经过排序的过滤器类别列表&#xff1b;任何具体的警告都会依次与列表中的每种过滤器进行匹配&…...

vue中高德地图使用

1、安装 npm i amap/amap-jsapi-loader --save2、封装地图组件 <template><div id"map" ref"mapcontainer"></div> </template><script> import AMapLoader from "amap/amap-jsapi-loader"; export default {befo…...

算法训练营Day33

#Java #贪心 开源学习资料 Feeling and experiences&#xff1a; 单调递增的数字&#xff1a;力扣题目链接 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个整数是单调递增的。 给定一个整数 n &#xff0c;返回 小于或等于 n 的最大数字&am…...

.net6解除文件上传限制。Multipart body length limit 16384 exceeded

在C#中上传文件时如果不修改默认文件的上传大小会提示Multipart body length limit 16384 exceeded这个错误提示表明你的请求中的Multipart body长度超过了16384字节的限制。这通常意味着你正在尝试发送一个太大的请求体&#xff0c;可能是因为包含了太多数据或者太大的文件。要…...

电子电器架构网络演化 —— 车载以太网TSN

电子电器架构网络演化 —— 车载以太网TSN 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任何消…...

智能门锁触控工作原理中应用的电容式触摸芯片

智能门锁的识别技术中&#xff0c;密码几乎成为标配功能。相比机械按键的触控方式&#xff0c;电容式触控方式可以在加上一层玻璃甚至金属一体成型之后与用户进行交互&#xff0c;由于进行了物理性隔离&#xff0c;使得外壳更具完整性&#xff0c;物理上安全性更佳。电容式触控…...

Spark 中 BroadCast 导致的内存溢出(SparkFatalException)

背景 本文基于 Spark 3.1.1 open-jdk-1.8.0.352目前在排查 Spark 任务的时候&#xff0c;遇到了一个很奇怪的问题&#xff0c;在此记录一下。 现象描述 一个 Spark Application, Driver端的内存为 5GB,一直以来都是能正常调度运行&#xff0c;突然有一天&#xff0c;报…...

深度学习经典算法详细模型图

很早绘制的一些模型图&#xff0c;当时放在CSDN的草稿里&#xff0c;今天发现了&#xff0c;把它分享出来吧&#xff0c;还能更清晰的帮助理解&#xff01; 1.AlexNet(2012) 2. VGGNet(2014) 3. SqueezeNet(2016) 4. GoogleNet(2014)...

03、Kafka ------ CMAK(Kafka 图形界面管理工具) 下载、安装、启动

目录 CMAK&#xff08;Kafka 图形界面管理工具&#xff09;下载安装启动打开 cmak 图形界面 CMAK&#xff08;Kafka 图形界面管理工具&#xff09; Kafka本身并没有提供Web管理工具&#xff0c;而是推荐使用bin目录下各种工具命令来管理Kafka&#xff0c; 这些工具命令其实用起…...

复习python从入门到实践——函数function

复习python从入门到实践——函数function 函数是特别难的&#xff0c;大家一定要好好学、好好复习、反复巩固。函数没学好&#xff0c;会为后面造成很大困扰。 教科书中函数举例会稍微有点复杂。在此章复习中&#xff0c;我将整理出容易疏漏和混淆的知识点&#xff0c;并用最简…...

【Internal Server Error】pycharm解决关闭flask端口依然占用问题

Internal Server Error The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application. 起因&#xff1a; 我们在运行flask后&#xff0c;断开服务依然保持运行&#xff0…...

torch.nn.functional.interpolate与torchvision.transforms.Resize方法对张量图像Resize应用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、非张量数据使用torch方法resize(transforms.Resize)二、张量数据使用torch方法resize(torch.nn.functional.interpolate) 前言 要使用 PyTorch 对张量进行…...

如何永久保存微信聊天记录?WeChatExporter一站式解决方案

如何永久保存微信聊天记录&#xff1f;WeChatExporter一站式解决方案 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 在数字时代&#xff0c;微信聊天记录承载着我们的工…...

告别语法冲突!用SLR分析法搞定编译原理中的移进/归约难题(附FOLLOW集实战)

告别语法冲突&#xff01;用SLR分析法搞定编译原理中的移进/归约难题&#xff08;附FOLLOW集实战&#xff09; 当你第一次尝试构建LR(0)分析表时&#xff0c;是否遇到过这样的报错&#xff1a;"状态I2存在移进/归约冲突"&#xff1f;这种既想移进又想归约的矛盾&…...

联想电脑开机蓝屏 + 自动修复卡死?官方 4 步救机指南,亲测有效

很多联想笔记本 / 台式机用户都遇到过这种崩溃场景&#xff1a;按下开机键后&#xff0c;屏幕先是亮起 Logo&#xff0c;紧接着弹出自动修复&#xff0c;转几圈就直接蓝屏报错&#xff0c;反复重启也进不去桌面&#xff0c;工作文件、学习资料全卡在里面&#xff0c;越急越慌。…...

别再折腾源码编译了!Ubuntu 22.04 LTS下用apt-get一键部署Asterisk PBX(附SIP账号配置详解)

别再折腾源码编译了&#xff01;Ubuntu 22.04 LTS下用apt-get一键部署Asterisk PBX&#xff08;附SIP账号配置详解&#xff09; 在开源通信领域&#xff0c;Asterisk作为功能最强大的PBX系统之一&#xff0c;长期困扰初学者的不是其丰富的功能&#xff0c;而是复杂的编译安装过…...

动态物理模拟中的碰撞处理:Pymunk中的球体大小变化

在物理模拟和游戏开发中,碰撞处理是一个常见但复杂的问题。特别是在使用像Pymunk这样的物理引擎时,如何正确地处理物体在碰撞后的行为(比如体积变化)显得尤为重要。本文将通过一个实际的例子,展示如何在Pymunk中实现一个球体在每次与地面或墙壁碰撞后,其半径增大的逻辑。…...

避震不是“越硬越好”:拆解阻尼、弹簧与预载的黄金三角法则

在改装领域&#xff0c;“避震越硬操控越好”几乎成了一条默认的“铁律”。不少玩家升级绞牙避震后&#xff0c;第一反应就是将阻尼旋钮拧至紧&#xff0c;以“颠”为荣&#xff0c;仿佛不如此便无法体现硬核姿态。但Cornerspeed必须指出一个被长期忽视的工程事实&#xff1a;刚…...

如何快速检测微信单向好友:WechatRealFriends实用指南

如何快速检测微信单向好友&#xff1a;WechatRealFriends实用指南 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/WechatRealFriends …...

终极指南:3分钟免费配置PotPlayer百度翻译插件,实现实时字幕翻译

终极指南&#xff1a;3分钟免费配置PotPlayer百度翻译插件&#xff0c;实现实时字幕翻译 【免费下载链接】PotPlayer_Subtitle_Translate_Baidu PotPlayer 字幕在线翻译插件 - 百度平台 项目地址: https://gitcode.com/gh_mirrors/po/PotPlayer_Subtitle_Translate_Baidu …...

App安全测试实战:OWASP ZAP 2.8 代理配置进阶与场景化应用

1. OWASP ZAP 2.8代理配置的核心价值 如果你做过移动应用安全测试&#xff0c;一定遇到过这样的困境&#xff1a;抓不到HTTPS流量、内网环境难以调试、自动化测试时代理频繁断开。这些问题看似简单&#xff0c;实际会浪费大量时间在环境搭建上。我在去年的一次金融App测试中&am…...

Translumo:游戏与视频实时屏幕翻译的终极解决方案

Translumo&#xff1a;游戏与视频实时屏幕翻译的终极解决方案 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是否曾因语…...