gin框架中的c.Next()/c.Abort()
package main
import (
"fmt"
"github.com/gin-gonic/gin"
)
func func1(c *gin.Context){
fmt.Println("func1")
}
func func2(c *gin.Context){
fmt.Println("func2 before")
c.Next()
fmt.Println("func2 after")
}
func func3(c *gin.Context){
fmt.Println("func3")
}
func func4(c *gin.Context){
fmt.Println("func4")
}
func func5(c *gin.Context){
fmt.Println("func5")
}
func main(){
r := gin.Default()
r.Get("/hello", func(c *gin.Context){})
shopGroup :- r.Group("/shop". func1, func2)
shopGroup.Use(func3)
{
shopGroup.Get("/index", func4, func5)
}
r.Run()
}
/*执行结果
func1
func2 before # 再往下执行的时候遇到c.Next(),就去执行其它函数,
func3
func4
func5
func2 after # 直到其它函数都执行完毕后,再返回执行当前函数中剩余的部分
*/
package main
import (
"fmt"
"github.com/gin-gonic/gin"
)
func func1(c *gin.Context){
fmt.Println("func1")
}
func func2(c *gin.Context){
fmt.Println("func2 before")
c.Next()
fmt.Println("func2 after")
}
func func3(c *gin.Context){
fmt.Println("func3")
c.Abort()
}
func func4(c *gin.Context){
fmt.Println("func4")
}
func func5(c *gin.Context){
fmt.Println("func5")
}
func main(){
r := gin.Default()
r.Get("/hello", func(c *gin.Context){})
shopGroup :- r.Group("/shop". func1, func2)
shopGroup.Use(func3)
{
shopGroup.Get("/index", func4, func5)
}
r.Run()
}
/*执行结果
func1
func2 before # 再往下执行的时候遇到c.Next(),就去执行其它函数,
func3 # func3函数中遇到c.Abort(),就会中断c.Next()
func2 after # 返回c.Next()函数中执行后续代码
*/
gin框架中的c.Next()/c.Abort()的更多相关文章
- 在gin框架中使用JWT
在gin框架中使用JWT JWT全称JSON Web Token是一种跨域认证解决方案,属于一个开放的标准,它规定了一种Token实现方式,目前多用于前后端分离项目和OAuth2.0业务场景下. 什么 ...
- golang gin框架中实现一个简单的不是特别精确的秒级限流器
起因 看了两篇关于golang中限流器的帖子: Gin 开发实践:如何实现限流中间件 常用限流策略--漏桶与令牌桶介绍 我照着用,居然没效果-- 时间有限没有深究.这实在是一个很简单的功能,我的需求是 ...
- gin框架中请求路由组的使用
1. gin框架中可以使用路由组来实现对路由的分类 package main import "github.com/gin-gonic/gin" func main() { rou ...
- gin框架中的路由
基本路由 gin框架中采用的路由库是基于httrouter做的 地址为:https://github.com/julienschmidt/httprouter httprouter路由库 点击查看代码 ...
- 【解决了一个小问题】gin框架中出现如下错误:"[GIN-debug] [WARNING] Headers were already written. Wanted to override status code 400 with 500"
POST到数据到一条gin框架的接口后,客户端收到400错误,并且返回了业务中返回的"decode json fail". 关键代码是: func report(c *gin.Co ...
- golang gin框架中实现大文件的流式上传
一般来说,通过c.Request.FormFile()获取文件的时候,所有内容都全部读到了内存.如果是个巨大的文件,则可能内存会爆掉:且,有的时候我们需要一边上传一边处理. 以下的代码实现了大文件流式 ...
- gin框架中中间件的编写与使用
概念 一个完整的系统可能包括鉴权认证.权限管理.安全检查.日志记录等多维度的系统支持. 中间件位与服务器和实际业务处理程序之间,其含义就相当于在请求和具体的业务处理逻辑之间增加某些操作,这种以额外增加 ...
- gin框架中的参数验证
结构体验证 用gin框架的数据验证,可以不用解析数据,减少if else,会简洁许多. 处理请求方法 func structValidator(context *gin.Context) { var ...
- gin框架中的会话控制
Cookie介绍 Http协议是无状态的,服务器不能记录浏览器的访问状态,也就是说服务器不能判断请求的客户端是否已经登录 Cookie就是解决http协议无状态的方案之一 Cookie实际上就是服务器 ...
- gin框架中请求参数的绑定与多数据格式处理
package main import ( "fmt" "github.com/gin-gonic/gin" ) // gin框架提供给开发者表单实体绑定的功能 ...
随机推荐
- [转帖]Megacli 错误码
MegaCLI Error Messages 0x00 Command completed successfully 0x01 Invalid command 0x02 DCMD opcode is ...
- nr_requests 以及 queue_depth的学习与了解
nr_requests 以及 queue_depth的学习与了解 背景 冯诺依曼的计算机体系结果里面 运算器,存储器是核心. 但是将核心的产生的结果推送出去的其实是IO IO虽然不是像运算器和存储器那 ...
- buildkit的简单学习与使用
下载 需要注意本文学习了很多如下网站的内容: https://zhuanlan.zhihu.com/p/366671300 # 第一步下载资源 https://github.com/moby/buil ...
- csv用Excel打开出现乱码
CSV用Excel打开出现乱码 今天出现一个问题 使用wps打开不会出现乱码.但使用 excel 打开的时候会出现乱码. 其实在我们把文件流转成文件的时候需要在bolb 对象前加上unicode标识, ...
- layui之静态表格的分页及搜索功能以及前端使用XLSX导出Excel功能
LayUI官方文档:https://layui.dev/docs/2/#introduce XLSX NPM地址:https://www.npmjs.com/package/xlsx XLSX 使用参 ...
- Unity的asm笔记
使用asm的好处 减少修改C#后unity编译dll的时间,对于项目中的C#代码越多效果越明显,比如我们的一个3dmmo项目是纯C#开发,每次修改C#后编译时间就要26s以上 在Unity2018.2 ...
- [转发]MySQL安装配置教程(超级详细、保姆级)
MySQL安装配置教程(超级详细.保姆级)_SoloVersion的博客-CSDN博客_mysql安装配置教程一. 下载MySQLMysql官网下载地址https://downloads.mysql. ...
- 多智能体强化学习算法【三】【QMIX、MADDPG、MAPPO】
相关文章: 常见多智能体强化学习仿真环境介绍[一]{推荐收藏,真的牛} 多智能体强化学习算法[一][MAPPO.MADDPG.QMIX] 多智能体强化学习算法[二][MADDPG.QMIX.MAPPO ...
- Python 解析JSON实现主机管理
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以易于阅读和编写的文本形式表示数据.JSON 是一种独立于编程语言的数据格式,因此在不同的编程语言中都有对 ...
- OS X 下安装 pycurl
1 (venv) ➜ pythonProject4 find / -iname ssl.h 2 find: /usr/sbin/authserver: Permission denied 3 /usr ...