gin 中间件流程控制:Next()、 Abort()

这篇具有很好参考价值的文章主要介绍了gin 中间件流程控制:Next()、 Abort()。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

gin 中间件流程控制

Next()

源码注释:Next应该只在中间件内部使用。它执行调用处理程序内部链中的挂起处理程序。

通俗的说,就是中间件放行,当一个中间件代码执行到Next(),会先执行它之后的函数,最后再来执行完本函数。

eg:

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"net/http"
)

func m1(c *gin.Context) {
	fmt.Println("m1 in......")
	c.Next()
	fmt.Println("m1 out......")
}
func indexHandler(c *gin.Context) {
	fmt.Println("index....in")
	c.JSON(http.StatusOK, gin.H{"msg": "index"})
	c.Next()
	fmt.Println("index....out")
}
func m2(c *gin.Context) {
	fmt.Println("m2 in......")
	c.Next()
	fmt.Println("m2 out.....")
}
func main() {
	router := gin.Default()

	router.GET("/", m1, indexHandler, m2)

	router.Run(":8080")

}
//输出
	/*
	m1 in......
	index....in
	m2 in......
	m2 out.....
	index....out
	m1 out.....
	*/.

gin 中间件流程控制:Next()、 Abort(),gin,gin,中间件,golang,后端
如果其中一个中间件响应了c.Abort(),后续中间件将不再执行,直接按照顺序走完所有的响应中间件

Abort

源码注释:Abort防止调用挂起的处理程序。注意,这不会停止当前处理程序。

假设您有一个授权中间件,用于验证当前请求是否已授权。

如果授权失败(例如:密码不匹配),调用Abort以确保不调用此请求的其余处理程序。

意思就是当程序执行到Abort()时,后续的 Handler Func就不会执行了

eg:文章来源地址https://www.toymoban.com/news/detail-610330.html

package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"net/http"
)

func m1(c *gin.Context) {
	fmt.Println("m1 in......")
	c.JSON(http.StatusOK, gin.H{"msg": "第一个中间件拦截了"})
	c.Abort()
}
func indexHandler(c *gin.Context) {
	fmt.Println("index....")
	c.JSON(http.StatusOK, gin.H{"msg": "index"})
}
func m2(c *gin.Context) {
	fmt.Println("m2 in......")
}
func main() {
	router := gin.Default()

	router.GET("/", m1, indexHandler, m2)

	router.Run(":8080")

}

//输出
//m1 in......

到了这里,关于gin 中间件流程控制:Next()、 Abort()的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Go Gin中间件

    Gin是一个用Go语言编写的Web框架,它提供了一种简单的方式来创建HTTP路由和处理HTTP请求。中间件是Gin框架中的一个重要概念,它可以用来处理HTTP请求和响应,或者在处理请求之前和之后执行一些操作。 以下是关于Gin中间件开发的一些基本信息: 中间件的定义 :在Gin中,中

    2024年02月05日
    浏览(37)
  • gin框架内容(三)--中间件

    gin框架内容(三)--中间件 Gin框架允许开发者在处理请求的过程中,加入用户自己的函数。这个函数就叫中间件,中间件适合处理一些公共的业务逻辑,比 如登录认证、权限校验、数据分页、记录日志、耗时统 计等 即比如,如果访问一个网页的话,不管访问什么路径都需要

    2024年02月15日
    浏览(35)
  • GO——gin中间件和路由

    中间件 参考:https://learnku.com/articles/66234 结构 中间件是函数 中间件函数被放在调用链上 调用链的末尾是路由path对应的函数 执行过程 net/http包调用到gin的serverHTTP 参考:go/pkg/mod/github.com/gin-gonic/gin@v1.7.7/gin.go:506 通过path找到路由对应的处理链,赋值给context 参考:go/pkg/mod/git

    2024年01月17日
    浏览(33)
  • gin框架39--重构 BasicAuth 中间件

    每当我们打开一个网址的时候,会自动弹出一个认证界面,要求我们输入用户名和密码,这种BasicAuth是最基础、最常见的认证方式,gin框架中提供了一种内置的方式,但它只能用内置的用户和密码,无法使用外部db中的用户和密码,这种方式很多时候是不友好的。 为此,本文

    2024年02月08日
    浏览(31)
  • gin中使用限流中间件

    限流又称为流量控制(流控),通常是指限制到达系统的并发请求数,本文列举了常见的限流策略,并以gin框架为例演示了如何为项目添加限流组件。 限流又称为流量控制(流控),通常是指限制到达系统的并发请求数。 我们生活中也会经常遇到限流的场景,比如:某景区

    2024年01月25日
    浏览(35)
  • go gin 全局中间件,以及设置值

    2024年02月11日
    浏览(29)
  • 简单记录下gin中使用中间件记录操作日志

    1、直接定义中间件 2、在需要使用的地方直接使用就可以,自动会收集日志到数据库中

    2024年02月09日
    浏览(32)
  • gin自定义中间件解决requestBody不可重复读问题

    先直接上代码 注意,上面的中间件,需要在第一个执行。 在gin中,context.Request.Body 是一个io.ReadCloser的接口,如下图 查看io.ReadCloser接口定义 我们发现io.ReaderCloser接口的本质就是 Read(p []byte) (n int, err error) 和 Close() error 的组合。 所以我们只需要自己编写实现 Read(p []byte) (n in

    2024年02月01日
    浏览(72)
  • Gin CORS 跨域请求资源共享与中间件

    1.1 什么是浏览器的同源策略? 同源策略 (Same origin policy) 是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现 浏览器最基本的安

    2024年01月25日
    浏览(37)
  • Go学习第十七章——Gin中间件与路由

    Gin框架允许开发者在处理请求的过程中,加入用户自己的钩子(Hook)函数。这个钩子函数就叫中间件,中间件适合处理一些公共的业务逻辑,比如登录认证、权限校验、数据分页、记录日志、耗时统计等 即比如,如果访问一个网页的话,不管访问什么路径都需要进行登录,

    2024年02月07日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包