首页 > 其他分享 >Gin 框架的执行流程

Gin 框架的执行流程

时间:2024-05-23 19:07:47浏览次数:32  
标签:请求 框架 流程 中间件 Gin 处理函数 路由

 

Gin框架是一个用Go语言编写的高性能Web框架,它基于httprouter实现,具有快速、简洁和高效的特性。

以下是Gin框架处理HTTP请求的大致执行流程:

1 初始化Gin引擎:

  用户创建一个新的gin.Engine实例,这通常是应用程序的主路由器。
  用户定义路由,这些路由是通过engine.Use()添加中间件和engine.GET(), engine.POST()等方法定义的。

 

2 启动服务器:

  Gin使用http.ListenAndServe()或http.Server监听指定的端口,开始接受HTTP请求。

 

3 接收请求:

  当客户端发起请求时,操作系统通过TCP连接将请求传递给服务器。

 

4 路由匹配:

  httprouter开始解析请求的URL路径,并尝试匹配预先注册的路由规则。
  如果匹配成功,httprouter将请求上下文和处理函数传递给Gin。

 

5 中间件执行:

  Gin的中间件是通过闭包实现的,它们被组织成一个链条。
  每个中间件会调用c.Next()来传递控制权给下一个中间件,直到达到实际的处理函数。
  中间件可以用来进行认证、日志记录、请求验证、响应修改等操作。

 

6 执行handler:

  最终,请求到达具体的路由处理函数,执行业务逻辑。

 

7 响应客户端:

  处理函数完成操作后,通过c.Writer向客户端发送响应。
  c.Writer可以设置状态码、写入响应头和响应体。

 

8 资源释放:

请求处理完成后,任何打开的资源(如数据库连接)会被关闭,完成HTTP连接的生命周期。

 

这个流程中,Gin的并发模型利用了Go的 goroutines 和 channels,使得在高负载下也能保持良好的性能。
Gin的轻量级设计和高效性使其成为构建 RESTful API 和服务的流行选择。

 

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

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

标签:请求,框架,流程,中间件,Gin,处理函数,路由
From: https://www.cnblogs.com/farwish/p/18209173

相关文章

  • Gin context 功能分类(context.go)
     CONTEXTCREATIONFLOWCONTROLERRORMANAGEMENTMETADATAMANAGEMENTINPUTDATARESPONSERENDERINGCONTENTNEGOTIATIONGOLANG.ORG/X/NET/CONTEXT 在线IPFS存储以太ETH单位转换器以太坊地址转换Link:https://www.cnblogs.com/farwish/p/18209171......
  • 说说Loader和Plugin的区别?编写Loader,Plugin的思路?
    一、区别前面两节我们有提到Loader与Plugin对应的概念,先来回顾下loader是文件加载器,能够加载资源文件,并对这些文件进行一些处理,诸如编译、压缩等,最终一起打包到指定的文件中plugin赋予了webpack各种灵活的功能,例如打包优化、资源管理、环境变量注入等,目的是解决loader......
  • 编译安装nginx 1.26.0、openssl 3.0.13 常见报错
    报错1[[email protected]]#./config--prefix=/usr/local/openssl--openssldir=/usr/local/opensslsharedCan'tlocateIPC/Cmd.pmin@INC(@INCcontains:/root/nginx-install/openssl-3.0.13/util/perl/usr/local/lib64/perl5/usr/lo......
  • 容器的接口访问错误:Recv failure: Connection reset by peer,Gin
    goversiongo1.22.1windows/amd64Windows11+amd64x86_64x86_64GNU/Linux--- 开发了一个golang程序:基于Ginweb框架的服务,部署到了ECS的容器(docker)上,端口40000也暴露成功了。ben发布于博客园#dockerrun-itd--namego1-m128MB-p40000:40000go1:v......
  • 【开源可视化报表设计器】借力实现高效率流程化办公!
    进行数字化转型、实现流程化办公,这些应该是目前很多企业都想要实现的目标吧。那么,利用什么样的软件平台可以实现?低代码技术平台拥有可视化界面、灵活操作、好维护等众多优势特点,可以借助低代码技术平台、开源可视化报表设计器的优势特点,助力企业打破信息孤岛,实现高效率流程化办公......
  • Bridging Language and Items for Retrieval and Recommendation
    目录概BLaIR代码HouY.,LiJ.,HeZ.,YanA.,ChenX.,andMcAuleyJ.Bridginglanguageanditemsforretrievalandrecommendation.2024.概本文提出了一种利用对比损失训练的预训练模型,能够把握数据集中的交互信息.BLaIRBLaIR的思想很简单如上图所示,输入......
  • PhiData 一款开发AI搜索、agents智能体和工作流应用的AI框架
    引言在人工智能领域,构建一个能够理解并响应用户需求的智能助手是一项挑战性的任务。PhiData作为一个开源框架,为开发者提供了构建具有长期记忆、丰富知识和强大工具的AI助手的可能性。本文将介绍PhiData的核心优势、应用示例以及如何使用PhiData来构建自己的AI助手。PhiData的设......
  • Mybatis框架 <insert> 标签内 useGeneratedKeys="true" 和 keyProperty="xxx" 属性
    useGeneratedKeys="true" 和 keyProperty="secondIndex" 这两个属性经常与MyBatis(Java持久层框架)的 <insert> 标签一起使用。这两个属性主要用于在插入记录后,从数据库返回的自动生成的主键或其他键值中,获取该键值并将其设置到Java对象的某个属性中。useGeneratedK......
  • $ git push -u origin "master"
    $gitpush-uorigin"master"Tohttps://gitee.com/ee/0523.git ![rejected]       master->master(non-fast-forward)error:failedtopushsomerefsto'https://gitee.com/ee/0523.git'hint:Updateswererejectedbecauseapushedbra......
  • Meteor-JS-框架入门指南-全-
    MeteorJS框架入门指南(全)原文:zh.annas-archive.org/md5/A6A998711E02B953FECB90E097CD1168译者:飞龙协议:CCBY-NC-SA4.0序言我们生活在一个惊人的时代。医学、通信、物理以及所有其他科学领域的进步为我们提供了创建一些在短短一段时间前简直是无法创造的事物的机会。然......