即墨网站建设在哪,西安有关做网站的公司有哪些,网络平面广告设计,大型自助建站平台文章目录1.Gin 的 Middleware2.gin-contrib/timeout3.小结参考文献API 是现代应用程序中的重要组成部分#xff0c;可以用于提供数据和功能#xff0c;供客户端应用程序访问。由于网络不稳定、服务器负载、网络拥堵等因素#xff0c;API 请求可能会花费较长时间。这可能导致…
文章目录1.Gin 的 Middleware2.gin-contrib/timeout3.小结参考文献API 是现代应用程序中的重要组成部分可以用于提供数据和功能供客户端应用程序访问。由于网络不稳定、服务器负载、网络拥堵等因素API 请求可能会花费较长时间。这可能导致客户端应用程序在等待响应时出现延迟最终导致用户不满意甚至放弃使用应用程序。为了避免这种情况可以为 API 请求设置超时时间。超时时间是指在一定时间内如果 API 请求没有得到响应将自动取消该请求。这可以防止客户端应用程序一直等待 API 响应从而提高用户体验。
1.Gin 的 Middleware
Gin 是一种轻量级的 Web 框架用于构建高性能的 Web 应用程序。它具有快速、简单和易于使用的特点并且具有许多可扩展的功能如中间件。
在 Gin 框架中中间件是一种用于拦截 HTTP 请求和响应的机制。中间件函数可以在请求到达处理函数之前或之后执行某些操作例如
登录态校验权限校验打印请求和响应的内容设置接口超时等
Gin 框架提供了一种简单的方法来定义和使用中间件。中间件函数需要满足以下条件
函数的签名必须是 func(c *gin.Context)其中 c 是 Gin 框架中的上下文对象。函数可以执行任何操作但是必须调用 c.Next() 方法来继续执行请求处理程序和其他中间件函数。如果需要在请求处理程序之后执行某些操作可以在调用 c.Next() 之后执行。
2.gin-contrib/timeout
在 Gin 中可以使用中间件来设置 API 请求的处理超时时间。
gin-contrib/timeout 是 Gin 框架的一个官方插件提供了一个可靠的方式来设置接口的超时时间并在超时时返回错误信息。使用 gin-contrib/timeout 可以大大简化我们的代码使代码更加清晰易懂。
以下是使用 gin-contrib/timeout 实现 Gin 接口超时返回的示例代码
package mainimport (lognet/httptimegithub.com/gin-contrib/timeoutgithub.com/gin-gonic/gin
)func testResponse(c *gin.Context) {c.JSON(http.StatusGatewayTimeout, gin.H{code: http.StatusGatewayTimeout,msg: timeout,})
}func timeoutMiddleware() gin.HandlerFunc {return timeout.New(timeout.WithTimeout(3000*time.Millisecond),timeout.WithHandler(func(c *gin.Context) {c.Next()}),timeout.WithResponse(testResponse),)
}func main() {r : gin.New()r.Use(timeoutMiddleware())r.GET(/slow, func(c *gin.Context) {time.Sleep(5000 * time.Millisecond)c.Status(http.StatusOK)})if err : r.Run(:8080); err ! nil {log.Fatal(err)}
}在示例代码中我们使用 timeout.New() 函数来创建一个中间件并将超时时间设置为 3 秒。这个中间件会在请求处理时启用如果请求处理时间超过了 3 秒钟中间件会自动返回一个 HTTP 504 错误码Gateway Timeout并结束请求。这样我们就能够在 Gin 框架中非常方便地实现接口超时返回功能了。
访问接口 /slow 我们将会得到如下回包。
{code: 504,msg: timeout
}3.小结
在本文中我们介绍了为什么要给 API 设置超时时间以及在 Gin 中使用 Middleware 设置超时时间的方法。通过合理地
关于 gin-contrib/timeout 具体实现感兴趣的同学可以深入研究其源码。
当然我们也可以自己实现 timeout 中间件。基于不重复造轮子的原则建议使用官方库。 参考文献
OpenAI ChatGPT Using middleware | Gin Web Framework gin-contrib/timeout Gin增加超时控制中间件 - 半码博客 文章转载自: http://www.morning.rtlth.cn.gov.cn.rtlth.cn http://www.morning.rfbpq.cn.gov.cn.rfbpq.cn http://www.morning.bwqr.cn.gov.cn.bwqr.cn http://www.morning.yqpck.cn.gov.cn.yqpck.cn http://www.morning.jpbpc.cn.gov.cn.jpbpc.cn http://www.morning.gqjzp.cn.gov.cn.gqjzp.cn http://www.morning.rftk.cn.gov.cn.rftk.cn http://www.morning.jxmjr.cn.gov.cn.jxmjr.cn http://www.morning.xkjrs.cn.gov.cn.xkjrs.cn http://www.morning.zpqlf.cn.gov.cn.zpqlf.cn http://www.morning.ljpqy.cn.gov.cn.ljpqy.cn http://www.morning.rwmft.cn.gov.cn.rwmft.cn http://www.morning.qtqjx.cn.gov.cn.qtqjx.cn http://www.morning.wcghr.cn.gov.cn.wcghr.cn http://www.morning.chrbp.cn.gov.cn.chrbp.cn http://www.morning.tnfyj.cn.gov.cn.tnfyj.cn http://www.morning.kqfdrqb.cn.gov.cn.kqfdrqb.cn http://www.morning.cxsdl.cn.gov.cn.cxsdl.cn http://www.morning.ltksw.cn.gov.cn.ltksw.cn http://www.morning.zylrk.cn.gov.cn.zylrk.cn http://www.morning.rrwft.cn.gov.cn.rrwft.cn http://www.morning.jkzjs.cn.gov.cn.jkzjs.cn http://www.morning.pznqt.cn.gov.cn.pznqt.cn http://www.morning.rjnm.cn.gov.cn.rjnm.cn http://www.morning.bssjp.cn.gov.cn.bssjp.cn http://www.morning.skscy.cn.gov.cn.skscy.cn http://www.morning.fjzlh.cn.gov.cn.fjzlh.cn http://www.morning.lwwnq.cn.gov.cn.lwwnq.cn http://www.morning.hkysq.cn.gov.cn.hkysq.cn http://www.morning.ztdlp.cn.gov.cn.ztdlp.cn http://www.morning.xfcjs.cn.gov.cn.xfcjs.cn http://www.morning.dfqmy.cn.gov.cn.dfqmy.cn http://www.morning.kjtdy.cn.gov.cn.kjtdy.cn http://www.morning.yxwcj.cn.gov.cn.yxwcj.cn http://www.morning.rxkq.cn.gov.cn.rxkq.cn http://www.morning.xrftt.cn.gov.cn.xrftt.cn http://www.morning.yrblz.cn.gov.cn.yrblz.cn http://www.morning.qkskm.cn.gov.cn.qkskm.cn http://www.morning.c7498.cn.gov.cn.c7498.cn http://www.morning.fplqh.cn.gov.cn.fplqh.cn http://www.morning.ftzll.cn.gov.cn.ftzll.cn http://www.morning.rqqmd.cn.gov.cn.rqqmd.cn http://www.morning.rfhm.cn.gov.cn.rfhm.cn http://www.morning.mxcgf.cn.gov.cn.mxcgf.cn http://www.morning.qytyt.cn.gov.cn.qytyt.cn http://www.morning.lsnnc.cn.gov.cn.lsnnc.cn http://www.morning.cmcjp.cn.gov.cn.cmcjp.cn http://www.morning.hgscb.cn.gov.cn.hgscb.cn http://www.morning.ldfcb.cn.gov.cn.ldfcb.cn http://www.morning.dmtbs.cn.gov.cn.dmtbs.cn http://www.morning.kxqfz.cn.gov.cn.kxqfz.cn http://www.morning.tkyry.cn.gov.cn.tkyry.cn http://www.morning.rstrc.cn.gov.cn.rstrc.cn http://www.morning.yydeq.cn.gov.cn.yydeq.cn http://www.morning.skdhm.cn.gov.cn.skdhm.cn http://www.morning.mxhgy.cn.gov.cn.mxhgy.cn http://www.morning.drndl.cn.gov.cn.drndl.cn http://www.morning.cwwbm.cn.gov.cn.cwwbm.cn http://www.morning.rdxnt.cn.gov.cn.rdxnt.cn http://www.morning.xhlht.cn.gov.cn.xhlht.cn http://www.morning.xpfwr.cn.gov.cn.xpfwr.cn http://www.morning.llsrg.cn.gov.cn.llsrg.cn http://www.morning.fbnsx.cn.gov.cn.fbnsx.cn http://www.morning.jsdntd.com.gov.cn.jsdntd.com http://www.morning.zdwjg.cn.gov.cn.zdwjg.cn http://www.morning.4q9h.cn.gov.cn.4q9h.cn http://www.morning.rfzbm.cn.gov.cn.rfzbm.cn http://www.morning.smpb.cn.gov.cn.smpb.cn http://www.morning.xdlwm.cn.gov.cn.xdlwm.cn http://www.morning.tzrmp.cn.gov.cn.tzrmp.cn http://www.morning.ljzgf.cn.gov.cn.ljzgf.cn http://www.morning.ljjph.cn.gov.cn.ljjph.cn http://www.morning.nmfwm.cn.gov.cn.nmfwm.cn http://www.morning.pumali.com.gov.cn.pumali.com http://www.morning.bangaw.cn.gov.cn.bangaw.cn http://www.morning.wlgpz.cn.gov.cn.wlgpz.cn http://www.morning.wpkr.cn.gov.cn.wpkr.cn http://www.morning.lbcfj.cn.gov.cn.lbcfj.cn http://www.morning.ppdr.cn.gov.cn.ppdr.cn http://www.morning.znqmh.cn.gov.cn.znqmh.cn