Go语言学习--Gin框架之Hello World

Go语言学习–Gin框架之Hello World

文章目录

  • Go语言学习--Gin框架之Hello World
    • 1. 简介
    • 2. 下载gin框架
    • 3. 开始HelloWorld

1. 简介

  • Gin 是一个用 Go (Golang) 编写的 Web 框架。 它具有类似 martini 的 API,性能要好得多,多亏了 httprouter,速度提高了 40 倍。 如果您需要性能和良好的生产力,您一定会喜欢 Gin。

    以下是Gin框架的一些主要特点和功能:

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

2. 下载gin框架

# 通过 go 直接下载gin框架
$ go get -u github.com/gin-gonic/gin
go: downloading golang.org/x/net v0.22.0
go: downloading github.com/go-playground/validator/v10 v10.19.0
go: downloading github.com/pelletier/go-toml/v2 v2.2.0
go: downloading github.com/go-playground/validator v9.31.0+incompatible
go: downloading github.com/pelletier/go-toml v1.9.5
go: downloading github.com/ugorji/go/codec v1.2.12
go: downloading github.com/ugorji/go v1.2.12
go: downloading google.golang.org/protobuf v1.33.0
go: downloading github.com/bytedance/sonic v1.11.3
go: downloading golang.org/x/sys v0.18.0
go: downloading github.com/gabriel-vasile/mimetype v1.4.3
go: downloading github.com/leodido/go-urn v1.4.0
go: downloading golang.org/x/crypto v0.21.0
go: downloading golang.org/x/text v0.14.0
go: downloading github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d
go: downloading golang.org/x/arch v0.7.0
go: downloading github.com/klauspost/cpuid/v2 v2.2.7
go: downloading github.com/chenzhuoyu/iasm v0.9.0
go: downloading github.com/chenzhuoyu/iasm v0.9.1
go: downloading github.com/stretchr/testify v1.9.0
go: upgraded github.com/bytedance/sonic v1.9.1 => v1.11.3
go: upgraded github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311 => v0.0.0-20230717121745-296ad89f973d
go: added github.com/chenzhuoyu/iasm v0.9.1
go: upgraded github.com/gabriel-vasile/mimetype v1.4.2 => v1.4.3
go: upgraded github.com/go-playground/validator/v10 v10.14.0 => v10.19.0
go: upgraded github.com/klauspost/cpuid/v2 v2.2.4 => v2.2.7
go: upgraded github.com/leodido/go-urn v1.2.4 => v1.4.0
go: upgraded github.com/mattn/go-isatty v0.0.19 => v0.0.20
go: upgraded github.com/pelletier/go-toml/v2 v2.0.8 => v2.2.0
go: upgraded github.com/ugorji/go/codec v1.2.11 => v1.2.12
go: upgraded golang.org/x/arch v0.3.0 => v0.7.0
go: upgraded golang.org/x/crypto v0.9.0 => v0.21.0
go: upgraded golang.org/x/net v0.10.0 => v0.22.0
go: upgraded golang.org/x/sys v0.8.0 => v0.18.0
go: upgraded golang.org/x/text v0.9.0 => v0.14.0
go: upgraded google.golang.org/protobuf v1.30.0 => v1.33.0# 如果下载不下来,可以考虑使用国内代理: https://goproxy.io/zh/
# 建议收藏该网址# 里面的内容大致如下:
### Linux 或者 Mac系统使用下面
# 配置 GOPROXY 环境变量
export GOPROXY=https://goproxy.io,direct
# 还可以设置不走 proxy 的私有仓库或组,多个用逗号相隔(可选)
export GOPRIVATE=git.mycompany.com,github.com/my/private
###### Windows 的配置如下:
# 配置 GOPROXY 环境变量
$env:GOPROXY = "https://goproxy.io,direct"
# 还可以设置不走 proxy 的私有仓库或组,多个用逗号相隔(可选)
$env:GOPRIVATE = "git.mycompany.com,github.com/my/private"
###

3. 开始HelloWorld

  • 在开发工具中好代码,以Goland为例
package mainimport ("net/http""github.com/gin-gonic/gin"
)func main() {// 创建一个默认的路由引擎r := gin.Default()// GET:请求方式;/helloworld:请求的路径// 当客户端以GET方法请求/helloworld路径时,会执行后面的匿名函数r.GET("/helloworld", func(c *gin.Context) {c.String(http.StatusOK, "Hello World")})// 启动HTTP服务,监听本机的8080端口r.Run(":8080")
}
  • 运行程序
# 运行刚刚写的程序
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery m
iddleware already attached.[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.- using env:   export GIN_MODE=release- using code:  gin.SetMode(gin.ReleaseMode)[GIN-debug] GET    /helloworld               --> main.main.func1 (3 handlers)
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Listening and serving HTTP on :8080
# 这边会卡在这边
  • 访问
# 访问方式: 
# 本地浏览器访问
http://127.0.0.1:8080/helloworld
  • 访问结果
# 浏览器中展示结果
Hello World# console新增信息
[GIN] 2024/03/21 - 11:03:39 | 200 |            0s |       127.0.0.1 | GET      "/helloworld"

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

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

相关文章

【QT入门】 Qt槽函数五种常用写法介绍

声明:该专栏为本人学习Qt知识点时候的笔记汇总,希望能给初学的朋友们一点帮助(加油!) 往期回顾: 【QT入门】实现一个简单的图片查看软件-CSDN博客 【QT入门】图片查看软件(优化)-CSDN博客 【QT入门】 lambda表达式(函数)详解-CSDN…

苹果手机更换国内IP地址的方法

在网络世界中,IP地址扮演着极为重要的角色,是互联网通信的基础。很多人在使用苹果手机时,有时候需要更换国内IP地址以获取更多网络资源或保护隐私。那么,是否可以更换国内ip地址?苹果手机更换国内ip地址的方法是怎样的…

Redis学习二--常见问题及处理

基本概念 Redis基本概念数据结构 机制 持久化机制: RDB(内存快照):某一时刻的内存快照以二进制的方式写入磁盘,可以手动触发和自动触发。 优点:生成文件小,恢复速度快,适用于灾难恢复。 缺点&#xff1a…

Linux docker4--本地jar包生成镜像和docker部署运行

一、通过springboot创建一个java项目,打成出jar包。 二、将jar包生成docker镜像 (1)、创建Dockerfile文件 创建Dockerfile文件,将如下的代码内容粘贴进去即可。 注意:本例中我打出的jar包是boot.jar。如果你打出的jar…

百度小程序入口在哪里找到怎么打开百度词令关键词口令直达小程序?

百度小程序入口在哪里找到怎么打开百度词令关键词口令直达小程序? 一、百度搜索找到百度词令小程序 打开手机百度搜索「词令」即可找到百度词令关键词口令直达小程序; 二、百度小程序中心找到百度小程序 2.1、打开手机百度,点击底部我的&a…

SQLiteC/C++接口详细介绍sqlite3_stmt类(十三)

返回:SQLite—系列文章目录 上一篇:SQLiteC/C接口详细介绍sqlite3_stmt类(十二) 下一篇: 待续 51、sqlite3_stmt_scanstatus_reset sqlite3_stmt_scanstatus_reset 函数用于重置指定语句对象最近一次执行的 WHER…

代码随想录刷题-二叉树

文章目录 1.二叉树的遍历方式2-144.二叉树的递归遍历🟢3-144.二叉树的迭代遍历🟢5-102.二叉树的层序遍历🟡 2.求二叉树的属性8-101.对称二叉树🟢9-104.二叉树的最大深度🟢10-111.二叉树的最小深度🟢11-222.…

kotlin中使用ViewBinding绑定控件

kotlin中使用ViewBinding绑定控件 什么是ViewBinding? View Binding是Android Studio 3.6推出的新特性,主要用于减少findViewById的冗余代码,但内部实现还是通过使用findViewById。通过ViewBinding,可以更轻松地编写可与视图交互…

Linux - IO

目录 四种典型IO方式阻塞IO非阻塞IO信号驱动异步IO 多路转接IOselect模型接口 四种典型IO方式 IO:输入输出–过程:等待IO就绪,进行数据拷贝 阻塞:为了完成某功能,发起一个调用,若完成功能条件不具备&#…

String类适合做HashMap的key的原因是什么

在《Java 编程思想》中有这么一句话:设计 hashCode() 时最重要的因素就是对同一个对象调用 hashCode() 都应该产生相同的值。 String 类型的对象对这个条件有着很好的支持,因为 String 对象的 hashCode() 值是根据 String 对象的 内容计算的&#xff…

unity学习(66)——控制器Joystick Pack优化

Joystick Pack这种重力带惯性不利于正常开发。决定进行优化。有一种万事俱备只欠东风的感觉。 源代码如下: 1.在脚本中找到轮盘所输出的方向值 2.把方向的改变值加到鸣人模型身上。 2.1控制器脚本中添加model变量 2.2在unity中赋值 2.3代码中修改位置 using Syst…

C++ [COCI2006-2007#2] ABC

文章目录 一、题目描述[COCI2006-2007#2] ABC题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 二、参考代码 一、题目描述 [COCI2006-2007#2] ABC 题面翻译 【题目描述】 三个整数分别为 A , B , C A,B,C A,B,C。这三个数字…

Python:使用 jionlp和cpca 实现国内地址文本解析

目录 使用 jionlp解析国内地址文本使用 cpca 实现解析国内地址文本总结 使用 jionlp解析国内地址文本 jionlp: 中文 NLP 预处理、解析工具包,准确、高效、易用 github: https://github.com/dongrixinyu/JioNLP文档:http://www.jionlp.com/ 使用示例 …

vue2源码学习01配置rollup打包环境

1.下载rollup相关依赖 npm i rollup rollup-plugin-babel babel/core babel/preset-env --save-dev 2.新建rollup.config.js配置打包选项 //rollup可以导出一个对象,作为打包的配置文件 import babel from rollup-plugin-babel export default {input: ./src/ind…

搭建Hadoop集群(完全分布式运行模式)

目录 一、准备模板机(最小化安装)二、配置一台纯净的模板机修改主机名固定IP地址通过yum安装方式安装必要的软件关闭防火墙且禁止自启修改hosts映射文件创建普通用户 并让他能用sudo命令在/opt下创建software和module完成 三、搭建完全分布式运行模式3.1克隆第一台机器hadoop10…

新能源汽车充电桩站点烟火AI识别检测算法应用方案

新能源汽车作为现代科技与环保理念的完美结合,其普及和应用本应带给人们更加便捷和绿色的出行体验。然而,近年来新能源汽车充电火灾事故的频发,无疑给这一领域投下了巨大的阴影。这不禁让人深思,为何这一先进的交通工具在充电过程…

【算法】acwing基础课笔记01-快排,归并

第一章(基础算法)(一) 以前排序都没怎么自己手写过,这学期终于决定抛弃各种番和游戏好好学一下…记点笔记激励一下自己。 视频知识 00:0000:30快速排序,00:3000&#…

如何防止Terraform在apply时销毁现有的资源

可以在 Terraform 的生命周期中使用 prevent_destroy 配置来指示 Terraform 不要销毁指定的资源。具体示例如下: 在 provider 的配置中添加 lifecycle_rule: provider "aws" {region "us-west-2"lifecycle_rule {prevent_des…

Vue+SpringBoot在线教育考试及管理平台开发(纯原创)后续还在开发,会持续更新

登录页面设计 登录页面设计思路-分为三个角色进行登录&#xff0c;分别为学生&#xff0c;教师&#xff0c;管理员。 前端将登录设计为表单形式&#xff0c;通过选项组件绑定角色参数&#xff0c;向后端传递角色信息&#xff0c;通过表单绑定向后端传递登录者所有信息 <div …

web蓝桥杯真题:灯的颜色变化

代码及注释&#xff1a; // TODO&#xff1a;完善此函数 显示红色颜色的灯 function red() { //将红色图片元素display显示出来&#xff0c;其他隐藏document.querySelector(#defaultlight).style.display nonedocument.querySelector(#redlight).style.display inline-b…