首页 > 其他分享 >Gin 框架是怎么使用 net http 包的(gin.go)

Gin 框架是怎么使用 net http 包的(gin.go)

时间:2024-05-22 20:20:27浏览次数:23  
标签:HTTP http 请求 Gin go gin net 路由

 

Gin 框架是基于 Go 语言的标准库 net/http 构建的,它使用 net/http 提供的基础功能来构建自己的高性能 Web 应用框架。

具体来说,Gin 使用 net/http 的以下方面:

 

1,HandlerFunc: Gin 使用 net/http 的 HandlerFunc 类型,这是一个可以作为 HTTP 处理程序的函数类型。Gin 自己的路由系统允许注册这些函数,并在匹配到相应的路由时调用它们。

 

2,Server: Gin 创建并使用 net/http.Server 对象来监听和处理 HTTP 请求。http.Server 是实际负责启动 HTTP 服务并管理请求处理的结构。

  Run() 函数正是体现了它如何使用 net/http.Server 对象来监听和处理 HTTP 请求的。

  engine 是 Gin 的核心结构,(ServeHTTP方法)它实现了 http.Handler 接口,这意味着它可以作为 http.ListenAndServe 的处理器 (Handler)。

  当 Run() 中调用 ListenAndServe 方法时,服务器开始监听指定地址上的 HTTP 请求,并且每当有请求到达时,它就会通过 Gin Engine 来处理这个请求,执行与请求 URL 匹配的路由处理函数。

  因此,通过 Run 函数,Gin 实际上是创建了一个 http.Server 实例,并配置了必要的参数(如监听地址、读写超时时间、最大头部大小等),然后启动服务器来监听和处理 HTTP 请求。

 

3,Middleware: Gin 的中间件机制是通过包装 net/http.Handler 接口实现的。

中间件函数接收一个 Handler 并返回一个新的 Handler,这样就可以形成一个处理链。当请求到达时,中间件会依次调用下一个处理程序,直到链结束。

 

4,Routing: Gin 提供了一套更高级的路由系统,它允许通过简洁的语法定义路由,并支持参数和路由组。

尽管如此,底层的路由匹配和请求处理还是委托给 net/http 的 ServeMux。

 

5,Error handling: Gin 在处理请求时,可以捕获错误并通过 ResponseWriter 返回适当的 HTTP 状态码。

这通常涉及到对 net/http.ResponseWriter 的包装,以便添加额外的功能,如追踪错误或自定义响应。

 

6,Request and Response: Gin 继承了 net/http 中的 Request 和 ResponseWriter 接口,提供了扩展的 API,使操作请求和响应更加方便,例如解析请求体、获取查询参数和设置响应头等。

 

7,Custom error handling: Gin 可以注册自定义的错误处理器,这些处理器会在发生错误时被调用,这在 net/http 中不是直接支持的。

 

总之,Gin 利用了 net/http 包提供的基础架构,通过在其上添加额外的抽象和便利功能,构建了一个功能丰富的Web框架。

 

Link:https://www.cnblogs.com/farwish/p/18207001

标签:HTTP,http,请求,Gin,go,gin,net,路由
From: https://www.cnblogs.com/farwish/p/18207001

相关文章

  • salesforce零基础学习(一百三十九)Admin篇之Begins/Contains/Starts With 是否区分大小
    本篇参考:https://help.salesforce.com/s/articleView?id=sf.customize_functions_begins.htm&type=5https://help.salesforce.com/s/articleView?id=sf.flow_ref_operators_condition.htm&type=5虽然做了salesforce开发也有一些年,但是因为salesforce的生态过于庞大,平时用的有一......
  • Kubernetes集群中配置Ingress支持HTTPS访问(一):cfssl
    目录一.系统环境二.前言三.对称加密和非对称加密简介四.什么是HTTPS五.Ingress简介六.配置ingress对外发布服务6.1安装NGINXingresscontroller控制器6.2创建pod6.3为pod创建svc服务6.4使用ingress发布服务6.5访问服务6.5.1使用Linux客户端来访问服务6.5.2使用Windows客户......
  • 2024年5月中国数据库排行榜:OP持续领跑,GoldenDB稳步上升进前八
    入夏时节,2024年5月的中国流行度排行榜排行榜如期发布。在这个骄阳似火的季节,各大数据库产品之间的竞争愈发激烈,名次间的细微变动展示了市场的动态和活力。各家厂商不断创新,通过技术升级和性能优化,力求在激烈的市场中占据更有利的位置。本月排行榜主要呈现以下几个特点:榜单产品......
  • mac code google chrome cpu占用大 风扇就开始转
    打开活动监视器,查看 code这个是占用比较大的,处理下:1)删除不需要用的,如果有C++的,删除,暂时不用,或者用其它专业ide。2)配制:code--首选项--设置 1、search.followSymlinks:false,不勾选。2、CodeActionsOnSave,编辑  "git.enabled":false参考:https://blog.cs......
  • golang微服务之go-zero零基础实战
    golang微服务之go-zero零基础实战1.环境准备mysql提供rpc服务接口后端交互存储etcd提供rpc服务注册与发现2.文件结构rpc服务接口:1.用户登录2.用户创建3.查询用户信息api服务接口:1.用户登录2.用户创建3.查询用户信息3.搭建步骤1.搭建rpc服务创建rpc......
  • Golang初学:vs code, launch.json, Run
    goversiongo1.22.1windows/amd64Windows11+amd64x86_64x86_64GNU/Linuxvscode1.89.1--- 序章在vscode开发go程序,之前总是在终端(terminal)输入命令(gorun.)来执行。不过,这不是最高效的方式。通过添加并配置launch.json可以更方便地程序仅运行(Ctrl+F5......
  • HttpURLConnection 调用soap 并且使用Dom4j解析多层级XML为Map对象
    1.引入dom4j的maven依赖包<dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.4</version></dependency>2.转map方法1importjava.io.BufferedReader;2importjava.io.InputStrea......
  • nginx打印所有配置内容
    nginx-T#打印输出所有的配置内容,含配置文件名称这些是NGINX命令行工具的选项及其说明-?,-h:显示帮助信息-v:显示版本信息并退出-V:显示版本信息和配置选项,然后退出-t:测试配置并退出-T:测试配置,将其打印出来,然后退出-q:在配置测试期间抑制非错误消息-ssignal:向主进程发送......
  • nginx配置
    #默认的服务器块,用于阻止未匹配的HTTPS请求本地生成证书opensslreq-x509-nodes-days365-newkeyrsa:2048-keyout/etc/nginx/ssl/default.key-out/etc/nginx/ssl/default.crt#防止别人输入其他没有配置ssl的域名,跳到其他server上server{listen443default_s......
  • CANoe中Logging模块使用方法及妙招⭐
    Logging是CANoe软件中的数据记录模块,主要在台架测试中使用,支持CAN/CANFD、LIN、FlexRay以及车载以太网总线的数据记录。常用的数据记录仪还有GL数据记录仪,GL有自己单独的硬件设备,应用场景主要为台架或者实车测试,进行无人看守时的数据记录,和Logging的最大区别就是Logging是CANoe软......