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

gin介绍及helloworld

1. 介绍

  • Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点

  • 对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错

  • 借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范

2 特性

快速:基于 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。

3. 安装

要安装Gin软件包,您需要安装Go并首先设置Go工作区。

1.首先需要安装Go(需要1.10+版本),然后可以使用下面的Go命令安装Gin。

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

2.将其导入您的代码中:

import "github.com/gin-gonic/gin"

3.(可选)导入net/http。例如,如果使用常量,则需要这样做http.StatusOK。

import "net/http"

4. 从零到无第一个项目

C:\Users\leell\go\src>mkdir gin-test
C:\Users\leell\go\src\gin-test>cd gin-test
C:\Users\leell\go\src\gin-test>go mod init gin-test
C:\Users\leell\go\src\gin-test>go get -u github.com/gin-gonic/gin
go: downloading github.com/bytedance/sonic v1.9.1
go: downloading github.com/ugorji/go v1.2.12
go: downloading github.com/ugorji/go/codec v1.2.12
...

新建main.go

package mainimport ("net/http""github.com/gin-gonic/gin"
)func main() {// 1.创建路由r := gin.Default()// 2.绑定路由规则,执行的函数// gin.Context,封装了request和responser.GET("/", func(c *gin.Context) {c.String(http.StatusOK, "hello World!")})// 3.监听端口,默认在8080// Run("里面不指定端口号默认为8080") r.Run(":8000")
}

通过命令:

go mod tidy
go run main.go

参考文章:

https://www.fansimao.com/928570.html 

相关文章:

gin介绍及helloworld

1. 介绍 Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点 对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单&…...

vue3 自动引入 ref reactive...

npm i unplugin-auto-import -D vite.config.js import { defineConfig } from vite; import vue from vitejs/plugin-vue; import AutoImport from unplugin-auto-import/vite;export default defineConfig({plugins: [vue(),AutoImport({// 自动导入 Vue 相关函数&#xff0…...

软考复习之软件工程篇

软件生命周期 问题定义:要示系统分析员与用户进行交流,弄清”用户需要计算机解决什么问题”然后提出关于“系统目标与范围的说明”,提交用户审查和确认 可行性研究:一方面在于把待开发的系统的目标以明确的语言描述出来&#xf…...

MySQL(七)MySQL和Oracle、PostgreSQL的区别

文章目录 一、MySQL和Oracle1.1 基本差别1.2 使用区别 二、MySQL和PostgreSQL2.1 基本差别2.2 使用差别 本系列文章: MySQL(一)SQL语法、数据类型、常用函数、事务 MySQL(二)MySQL SQL练习题 MySQL(三&…...

(2)(2.4) CRSF/ELRS Telemetry

文章目录 前言 1 ArduPilot 参数编辑器 前言 !Note ELRS(ExpressLRS)遥控系统使用穿越火线协议,连接方式类似。不过,它不像穿越火线那样提供双向遥测。 TBS CRSF 接收机与 ArduPilot 的接口中包含遥测和遥控信息。…...

服务器发送http请求

1、发送GET请求 curl localhost:9009/setCreateDataItem?a1&bnihao 2、发送POST请求 curl -X POST -d a1&bnihao localhost:9009/setCreateDataItem 3、发送json格式请求: curl -H "Content-Type: application/json" -X POST -d {"abc…...

Effective Objective-C 学习第二周

理解“属性”这一概念 “属性”(property)是 Objective-C 的一项特性,用于封装对象中的数据。Objective-C 对象通常会把其所需的数据保存为各种实例变量。实例变量一般通过“存取方法”来访问。其中,“获取方法”(get…...

JS进阶-深入对象(二)

拓展:深入对象主要介绍的是Js的构造函数,实例成员,静态成员,其中构造函数和Java种的构造函数用法相似,思想是一样的,但静态成员和实例成员和java种的有比较大的差别,需要认真理解 • 创建对象三…...

【Gene Expression Prediction】Part2 Enchancer discovery

文章目录 5. 第一个讲座:Enchancer discovery5.1 STARR-seq5.2 Enchancer detection with weakly supervised learning5.3 Model performance 来自Manolis Kellis教授(MIT计算生物学主任)的课 YouTube:(Gene Expression Predictio…...

【UEFI基础】EDK网络框架(UDP4)

UDP4 UDP4协议说明 UDP的全称是User Datagram Protocol,它不提供复杂的控制机制,仅利用IP提供面向无连接的通信服务。它将上层应用程序发来的数据在收到的那一刻,立即按照原样发送到网络。 UDP报文格式: 各个参数说明如下&…...

vivado使用注意事项

记得给constrs(.xdc)限制文件设置为目标文件(set as Target Consraint File)...

gin路由篇

1. 基本路由 gin 框架中采用的路由库是基于httprouter做的 import ("net/http""github.com/gin-gonic/gin" )func main() {// 1.创建路由r : gin.Default()// 2.绑定路由规则,执行的函数// gin.Context,封装了request和responser.…...

C++逆向分析--继承的本质

一.一些思考 继承是面向对象的三个特性之一。这篇文章我们从底层的角度去理解什么是继承。他的作用是什么。首先继承的出现是更好的避免代码的重复冗余。要理解一件事很重要,C其实是C的延申。那么C的出现是为了解决C语言上C祖师爷认为不友好的事情,也为…...

​LeetCode解法汇总2865. 美丽塔 I

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 描述: 给你一个长…...

pinia 的使用方法

使用方式(选项式) 1、在 mian.js 导入 pinia 里的 createPinia 函数。 2、app.use 这个 createPinia 函数的返回值。 // main.jsimport { createPinia } from pinia;app.use(createPinia()); 3、创建一个 js 文件(该文件保存着共享的数据&…...

sky_take_out

day01: 前端网址通过nginx访问后端网址(前后网址不一致),有三个好处: 一是提高访问速度,二是进行负载均衡,三是保障后端安全性 用md5加密了密码 后端使用knife4j调试,用Swagger生成接口文档&am…...

LC 2865. 美丽塔 I

2865. 美丽塔 I 难度 : 中等 题目大意 给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。 你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i &#xff0c;高度为 heights[i] 。 如果以下条件满足&#xff0c;我们称这些塔是 美丽 的&#xff1a; 1 < heights…...

代理设计模式JDK动态代理CGLIB动态代理原理

代理设计模式 代理模式&#xff08;Proxy&#xff09;&#xff0c;为其它对象提供一种代理以控制对这个对象的访问。如下图 从上面的类图可以看出&#xff0c;通过代理模式&#xff0c;客户端访问接口时的实例实际上是Proxy对象&#xff0c;Proxy对象持有RealSubject的引用&am…...

[陇剑杯 2021]webshell

[陇剑杯 2021]webshell 题目做法及思路解析&#xff08;个人分享&#xff09; 问一&#xff1a;单位网站被黑客挂马&#xff0c;请您从流量中分析出webshell&#xff0c;进行回答&#xff1a; 黑客登录系统使用的密码是_____________。 题目思路&#xff1a; 分析题目&…...

美易官方:小米汽车交付时间传闻被官方辟谣

在科技与互联网的快速发展浪潮中&#xff0c;各类信息传播速度之快令人咋舌。然而&#xff0c;信息的真实性却时常成为公众关注的焦点。近日&#xff0c;关于小米汽车交付时间的谣言再次引起市场的广泛关注。小米公司发言人迅速作出回应&#xff0c;明确指出这些关于小米汽车交…...

告别重复编码:用快马ai自动生成c语言基础工具模块提升效率

告别重复编码&#xff1a;用快马AI自动生成C语言基础工具模块提升效率 在C语言开发中&#xff0c;我们经常需要重复编写一些基础工具模块&#xff0c;比如安全的字符串输入、动态数组管理、日志记录等功能。这些代码虽然不复杂&#xff0c;但每次都从头开始写确实很浪费时间。…...

shjshxksxjxbf

一、OpenAI 1.OpenAI是什么简单来说&#xff0c;OpenAI 大模型 是由美国人工智能公司 OpenAI 开发的一系列大型语言模型&#xff08;LLMs&#xff09; 。你可以把它们想象成拥有巨大“知识储备”和“学习能力”的超级大脑&#xff0c;它们被训练用来理解和生成人类语言&#xf…...

R16增强型Type II码本:空频域联合压缩与量化反馈机制解析

1. R16增强型Type II码本的技术背景 在5G Massive MIMO系统中&#xff0c;信道状态信息&#xff08;CSI&#xff09;反馈的精度和效率直接影响着系统性能。R15 Type II码本虽然已经实现了空域压缩&#xff0c;但随着频段向毫米波延伸和天线规模扩大&#xff0c;传统方案面临反馈…...

告别繁琐流程:用快马AI生成脚本实现龙虾部署效率飞跃

最近在团队里负责微服务部署时&#xff0c;发现每次更新代码都要重复执行十几个步骤&#xff1a;拉代码、装依赖、打镜像、推仓库、重启容器...一套流程下来至少半小时&#xff0c;还容易手滑出错。于是研究了一套自动化方案&#xff0c;用Python脚本把整个流程串了起来&#x…...

5分钟搞定Halcon/C++图像处理:从猴子眼睛识别到实战代码解析

5分钟实战Halcon/C&#xff1a;从猴子眼睛识别到工业级图像处理技巧 在计算机视觉领域&#xff0c;Halcon以其强大的图像处理能力和简洁的API设计&#xff0c;成为工业检测和科研开发的利器。不同于OpenCV需要手动实现复杂算法&#xff0c;Halcon将数百种视觉算法封装为直观的操…...

英飞凌TC3xx SMU模块实战:如何配置看门狗超时自动复位(附寄存器详解)

英飞凌TC3xx SMU模块实战&#xff1a;如何配置看门狗超时自动复位&#xff08;附寄存器详解&#xff09; 在汽车电子和工业控制领域&#xff0c;系统稳定性是生死攸关的指标。想象一下&#xff0c;当你的ECU在高速公路上以120km/h运行时突然死机&#xff0c;或者工业机器人正在…...

cool-admin(midway版)前端错误处理:全局错误边界与日志上报

cool-admin(midway版)前端错误处理&#xff1a;全局错误边界与日志上报 【免费下载链接】cool-admin-midway &#x1f525; cool-admin(midway版)一个很酷的后台权限管理框架&#xff0c;模块化、插件化、CRUD极速开发&#xff0c;永久开源免费&#xff0c;基于midway.js 3.x、…...

3步打造个人数据备份系统:QQ空间数字记忆永久保存指南

3步打造个人数据备份系统&#xff1a;QQ空间数字记忆永久保存指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字化时代&#xff0c;个人数据备份已成为保护数字记忆的关键措施。…...

Phi-3-mini-4k-instruct-gguf参数详解:温度0.0时技术文档摘要的逻辑连贯性分析

Phi-3-mini-4k-instruct-gguf参数详解&#xff1a;温度0.0时技术文档摘要的逻辑连贯性分析 1. 模型概述与核心能力 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本&#xff0c;专为高效推理场景优化。该模型在问答、文本改写、摘要整理等任务中表…...

嵌入式监控DIY:用RV1126开发板和任意UVC摄像头搭建低成本RTSP视频服务器

嵌入式监控DIY&#xff1a;用RV1126开发板和任意UVC摄像头搭建低成本RTSP视频服务器 在智能家居和工业物联网快速发展的今天&#xff0c;视频监控系统的需求日益增长。传统监控方案往往价格昂贵且灵活性不足&#xff0c;而基于嵌入式开发板和普通USB摄像头的DIY方案则提供了高性…...