Gin框架入门
参考文档
Gin: https://gin-gonic.com/zh-cn/docs/quickstart/
net/http: https://pkg.go.dev/net/http
代码分析
package main
import (
"fmt"
"time" // 时间包
"net/http" // 提供了HTTP客户端和服务端的实现
"github.com/gin-gonic/gin" // gin框架
)
func main() {
// 返回Gin的`type Engine struct{}`,里面包含RouterGroup,
// 相当于创建一个路由Handlers, 可以后期绑定各类的路由规则和函数/中间件等
router := gin.Default()
// 创建不同的HTTP方法绑定到Handlers中,支持POST/PUT等常用Restful方法
// gin.Context: Context是gin中的上下文,允许我们在中间件之间传递变量
// 管理流、验证JSON请求、响应json请求等,在gin中包含大量Context的方法
// 例如常用的DefaultQuery、Query、DefaultPostForm、PostForm等
router.GET("/test", func(c *gin.Context) {
// 响应json格式类型
// gin.H{}就是一个map[string]interface{}
c.JSON(200, gin.H{
"message": "test",
})
})
s := &http.Server{
Addr: ":8080",
Handler: router,
ReadTimeout: 60 * time.Second,
WriteTimeout: 60 * time.Second,
MaxHeaderBytes: 1 << 20,
}
s.ListenAndServe()
}
&http.Server 和 ListenAndServe
# http.Server
type Server struct {
Addr string //监听的TCP地址,格式为:8000
Handler Handler // http句柄,实质为ServeHTTP,用于处理程序响应HTTP请求
TLSConfig *tls.Config // 安全传输层协议(TLS)配置
ReadTimeout time.Duration // 允许读取的最大时间
ReadHeaderTimeout time.Duration // 允许读取请求头的最大时间
WriteTimeout time.Duration // 允许写入的最大时间
IdleTimeout time.Duration // 等待的最大时间
MaxHeaderBytes int // 请求头的最大字节数
ConnState func(net.Conn, ConnState) // 指定一个可选的回调函数,当客户端连接时发生变化时调用
ErrorLog *log.Logger //指定一个可选的日志记录器
...
}
# ListenAndServe
func (srv *Server) ListenAndServe() error {
if srv.shuttingDown() {
return ErrServerClosed
}
addr := srv.Addr
if addr == "" {
addr = ":http"
}
ln, err := net.Listen("tcp", addr)
if err != nil {
return err
}
return srv.Serve(ln)
}
开启监听服务,监听TCP网络地址,Addr和调用调用应用程序处理连接上的请求
我们在源码中看到Addr是调用我们在&http.Server中设置的参数,因此我们在
设置时要用&,我们要改变参数的值,因为我们ListenAndServe和其他一些方法
需要用到&http.Server中的参数,他们是相互影响的。
Gin框架入门的更多相关文章
- GO语言GIN框架入门
Gin框架介绍 Gin是一个用Go语言编写的web框架.它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍. 中文文档 Gin框架安装与使用 ...
- Go最火的Gin框架简单入门
Gin 介绍 Gin 是一个 Golang 写的 web 框架,具有高性能的优点,,基于 httprouter,它提供了类似martini但更好性能(路由性能约快40倍)的API服务.官方地址:htt ...
- 01 . Go框架之Gin框架从入门到熟悉(路由和上传文件)
Gin框架简介 Gin是使用Go/Golang语言实现的HTTP Web框架, 接口简洁, 性能极高,截止1.4.0版本,包含测试代码,仅14K, 其中测试代码9K, 也就是说测试源码仅5k左右, 具 ...
- gin框架教程一: go框架gin的基本使用
我们在用http的时候一般都会用一些web框架来进行开发,gin就是这样的一个框架,它有哪些特点呢 一:gin特点 1.性能优秀2.基于官方的net/http的有限封装3.方便 灵活的中间件4.数据绑 ...
- 在gin框架中使用JWT
在gin框架中使用JWT JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0业务场景下. 什么 ...
- GoWeb之gin框架
Gin 是一个 go 写的 web 框架,具有高性能的优点.官方地址:https://github.com/gin-gonic/gin 一.快速上手 安装 go mod init go get -u ...
- 一步一步分析Gin框架路由源码及radix tree基数树
Gin 简介 Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much ...
- CI框架入门1
CI框架入门: 1.url的特点 2.目录结构/布局 3.MVC分别在哪里,如何依葫芦画瓢 4.安全性 ...
- 【原创】NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战
概述 本文演示的是一个Android客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo. 当前由于NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能. ...
- 【原创】NIO框架入门(三):iOS与MINA2、Netty4的跨平台UDP双向通信实战
前言 本文将演示一个iOS客户端程序,通过UDP协议与两个典型的NIO框架服务端,实现跨平台双向通信的完整Demo.服务端将分别用MINA2和Netty4进行实现,而通信时服务端你只需选其一就行了.同 ...
随机推荐
- [转帖]ipset详解
https://zhuanlan.zhihu.com/p/489103374 ipset创建:create 创建一个新的ipset集合:ipset create SETNAME TYPENAME SE ...
- [转帖]【杂学第十二篇】oracledb_exporter监听oracle19c数据库出现libclntsh、ORA-12162、ORA-00942异常解决
http://www.taodudu.cc/news/show-4845374.html docker run -d --name oracledb_exporter --restart=always ...
- 果然,基于 VictoriaMetrics 修改而来的 VictoriaLogs 来了!!!
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 2022 年 6 月的时候,正在痛苦的研究 grafana ...
- Go 泛型发展史与基本介绍
Go 泛型发展史与基本介绍 Go 1.18版本增加了对泛型的支持,泛型也是自 Go 语言开源以来所做的最大改变. 目录 Go 泛型发展史与基本介绍 一.为什么要加入泛型? 二.什么是泛型 三.泛型的来 ...
- 手把手教学小型金融知识图谱构建:量化分析、图数据库neo4j、图算法、关系预测、命名实体识别、Cypher Cheetsheet详细教学等
手把手教学小型金融知识图谱构建:量化分析.图数据库neo4j.图算法.关系预测.命名实体识别.Cypher Cheetsheet详细教学等 效果预览: 1. 知识图谱存储方式 知识图谱存储方式主要包含 ...
- Matplotlib配置图例legend()设置透明和并排显示
1.多排显示 x=np.linspace(start=-np.pi,stop=np.pi,num=300) plt.style.use('classic') Fig,Axes=plt.subplots ...
- LyScript 插件实现UPX寻找入口
LyScript 插件可实现对压缩壳的快速脱壳操作,目前支持两种脱壳方式,一种是运用API接口自己编写脱壳过程,另一种是直接加载现有的脱壳脚本运行脱壳. 插件地址:https://github.com ...
- 模式识别实验:基于主成分分析(PCA)的人脸识别
前言 本文使用Python实现了PCA算法,并使用ORL人脸数据集进行了测试并输出特征脸,简单实现了人脸识别的功能. 1. 准备 ORL人脸数据集共包含40个不同人的400张图像,是在1992年4月至 ...
- ListView改变行高的技巧
改变 ListView 的行高 (Line Height) (cjc,2009.6.2) 改变 ListView 的行高 (Line Height) (cjc,2009.6.2) ListView在R ...
- 《ASP.NET Core 与 RESTful API 开发实战》-- (第7章)-- 读书笔记(中)
第 7 章 高级主题 7.2 并发 当两个用户获取同一个资源后,再同时修改该资源,就会导致并发问题 常见实现并发的方法有以下两种: 保守式并发控制,每次修改资源,都锁定资源 开放式并发控制,每次修改资 ...