社区
go语言
帖子详情
golang基于iris框架拦截器怎么写?
方明驹
2019-07-29 07:23:09
在网上找了很多资料,但是都不是iris框架的,感觉这个框架就没有这个功能?有大神帮忙解决下吗?
...全文
435
3
打赏
收藏
golang基于iris框架拦截器怎么写?
在网上找了很多资料,但是都不是iris框架的,感觉这个框架就没有这个功能?有大神帮忙解决下吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xss13
2019-08-15
打赏
举报
回复
这是我写的一个jwt拦截登录,实现不标准作为一个参考
xss13
2019-08-15
打赏
举报
回复
iris是有学习网站的,而且我觉得iris很强大的 https://www.studyiris.com/doc/index.html 这个是中文社区,推荐你去iris官网查阅文档。 拦截器实现: app := iris.Default() app.Use(func(c context.Context) { //如果该拦截器执行完必须要向下继续传递 defer c.Next() //拦截器的值向下传递 c.Values().Set("KEY","VALUE") //获取上一个拦截器的值 c.Values().Get("KEY","VALUE") //不希望拦截器继续,可直接ctx.JSON()等,并且去掉c.Next()函数即可 })
qybao
2019-07-30
打赏
举报
回复
看了一下iris源码,都有相应的接口,要实现并不难
Application结构体的Router和ContextPool都是可见的,根据情况自己实现相应的接口,重新设置一下Application的实例就可以
以下是Application的源码
// New creates and returns a fresh empty iris *Application instance.
func New() *Application {
config := DefaultConfiguration()
app := &Application{
config: &config,
logger: golog.Default,
APIBuilder: router.NewAPIBuilder(),
Router: router.NewRouter(),
}
app.ContextPool = context.New(func() context.Context {
return context.NewContext(app)
})
return app
}
思路:
返回app后,重新修改app.ContextPool = context.New(func() context.Context {
c := context.NewContext(app) //原来的Context实例
mc := &MyContext{c} //MyContext重新实现context.Context接口
return mc
})
//重新实现Context接口
type MyContext struct {
base_context context.Context //保存原来的Context实例
}
func (mc *MyContext) Do(Handlers) { //其他方法类似,你想在哪个方法加拦截就加拦截,不需要拦截器就直接调用原来的Context实例的方法
doYourFun() //加入你的拦截
mc.base_context(Handlers) //调用原来的Context实例的方法
}
//context.Context 的接口方法请参照源码
https://github.com/kataras/iris/blob/master/context/context.go
golang
使用
iris
框架
全局异常捕获
思路:通过设置recover可以实现异常自动回复功能,那么我们可以通过自定义recover去实现日志信息的返回 /** * @Description: 错误信息处理 * @Author: guoyzh * @Date: 2019/10/23 */ func customRecover(ctx
iris
.Context) { defer func() { if err := recover(...
Iris
微服务
框架
_
golang
web
框架
_完整示例Demo
Iris
是一款Go语言中用来开发web应用的
框架
,该
框架
支持编
写
一次并在任何地方以最小的机器功率运行,如Android、ios、Linux和Windows等。该
框架
只需要一个可执行的服务就可以在平台上运行了。
Iris
框架
以简单而强大的api而被开发者所熟悉。
iris
除了为开发者提供非常简单的访问方式外,还同样支持MVC。另外,用
iris
构建微服务也很容易。在
iris
框架
的官方网站上,被称为速度最快的Go后端开发
框架
。
web
框架
:
Iris
快速入门
web
框架
:
Iris
快速入门
【
Golang
】gin
框架
入门
gin
golang
-gin
框架
入门
相当于spring的
拦截器
,其中的Context的Next方法决定拦截前后。上下文对象同样是gin的基础,在gin中context方法非常的多。类似SpringBoot的SpringApplication;在go和go
框架
中,上下文是一个非常核心的概念,,当然和原生Context有点不同。到这里启动基本完成,
go语言
2,190
社区成员
914
社区内容
发帖
与我相关
我的任务
go语言
go语言学习与交流版
复制链接
扫一扫
分享
社区描述
go语言学习与交流版
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章