当前位置: 首页 > wzjs >正文

建设flash网站青岛网络seo公司

建设flash网站,青岛网络seo公司,wordpress 联系表单,wap游戏纵横四海最近在GitHub上发起了一个关于Beego框架的小插件的开源仓库,这一举动虽然看似微小,但其中的快乐和意义却是无法用言语表达的。 Beego是一个开源的Go语言Web框架,它采用了MVC架构模式,并集成了很多常用的功能和中间件。小插件是指…

最近在GitHub上发起了一个关于Beego框架的小插件的开源仓库,这一举动虽然看似微小,但其中的快乐和意义却是无法用言语表达的。

Beego是一个开源的Go语言Web框架,它采用了MVC架构模式,并集成了很多常用的功能和中间件。小插件是指与Beego框架配套使用的、可扩展的、独立的软件模块或组件。通过开发小插件,可以扩展Beego框架的功能,提高开发效率和代码可维护性。

Beego-Requestid是一种中间件(Middleware),用于在处理HTTP请求时,为每个请求生成一个唯一的ID,并将其附加到请求上下文中。这样,您可以在应用程序的其他地方方便地访问这个唯一的请求ID,从而更好地跟踪和调试应用程序。

使用RequestId中间件可以帮助您解决以下问题:

  1. 跟踪请求:通过在每个请求中添加唯一的ID,您可以轻松地在应用程序中跟踪请求的来源和路径。这对于调试和性能优化非常有用。
  2. 日志记录:您可以使用请求ID将日志记录与特定请求关联起来。这样,当您在日志中查找特定请求的信息时,可以更方便地定位相关的日志条目。
  3. 错误处理:如果应用程序中出现错误,请求ID可以帮助您识别是哪个请求引发了错误。这对于故障排查和问题报告非常有帮助。
代码

话不多说直接看源码:

package beego_requestidimport ("github.com/beego/beego""github.com/beego/beego/context""github.com/google/uuid"
)const DefaultHeaderReqIdKey = "X-Request-Id"type Option func(config *Config)type GenRequestIdFunc func() stringtype Config struct {genRequestIdFunc               GenRequestIdFuncheaderReqIdKey, customReqIdKey string
}func NewFilter(opts ...Option) beego.FilterFunc {cnf := &Config{genRequestIdFunc: DefaultGenRequestIdFunc,headerReqIdKey:   DefaultHeaderReqIdKey,}for _, opt := range opts {opt(cnf)}return func(c *context.Context) {reqId := c.Request.Header.Get(cnf.headerReqIdKey)if reqId == "" {reqId = cnf.genRequestIdFunc()c.Request.Header.Add(cnf.headerReqIdKey, reqId)}if cnf.customReqIdKey != "" {c.Input.SetData(cnf.customReqIdKey, reqId)}}
}func WithGenRequestIdFunc(genFunc GenRequestIdFunc) Option {return func(config *Config) {config.genRequestIdFunc = genFunc}
}func WithHeaderReqIdKey(key string) Option {return func(config *Config) {config.headerReqIdKey = key}
}func WithCustomReqIdKey(key string) Option {return func(config *Config) {config.customReqIdKey = key}
}func DefaultGenRequestIdFunc() string {return uuid.NewString()
}

使用示例:

package mainimport ("log""time""github.com/spf13/cast""github.com/beego/beego""github.com/beego/beego/context"beego_requestid "github.com/ibarryyan/beego-requestid"
)func example1() {beego.InsertFilter("/*", beego.BeforeRouter, beego_requestid.NewFilter())beego.Get("/hello", func(c *context.Context) {reqId := c.Request.Header.Get("X-Request-Id")log.Printf("reqestid = %s", reqId)_, _ = c.ResponseWriter.Write([]byte("hello..."))return})beego.Run(":9900")
}func example2() {beego.InsertFilter("/*", beego.BeforeRouter, beego_requestid.NewFilter(beego_requestid.WithGenRequestIdFunc(func() string {return cast.ToString(time.Now().Unix())}),beego_requestid.WithHeaderReqIdKey("my_header_reqid"),beego_requestid.WithCustomReqIdKey("my_reqid"),))beego.Get("/hello", func(c *context.Context) {reqId := c.Request.Header.Get("my_header_reqid")log.Printf("reqestid = %s", reqId)cReqId := c.Input.GetData("my_reqid")log.Printf("my reqestid = %s", cReqId)_, _ = c.ResponseWriter.Write([]byte("hello..."))return})beego.Run(":9900")
}

此外,前端请求时需要带上header key要与后端的一致

获得快乐

发完代码后我就直接去Beego的GitHub仓库下提了一个issue,来分享的研究的中间件,地址:https://github.com/beego/beego/issues/5419,后来没想到竟然收到了回复,哈哈哈

在这里插入图片描述

然后我立马就去新的issue分享了我的插件

https://github.com/beego/beego/issues/5421

再后来,我就有两个star了~

在这里插入图片描述

仓库地址

https://github.com/ibarryyan/beego-requestid

http://www.dtcms.com/wzjs/347480.html

相关文章:

  • cms建设网站郑州网站制作公司
  • 网站建设 镇江万达自己开网店怎么运营
  • 做群头像的网站在线制作图片搜索识图入口
  • 成都定制网站建设排名优化公司口碑哪家好
  • 做衣服 网站关键词排名顾问
  • 丹东做网站seo外包公司报价
  • 如何配置php网站新媒体营销成功案例
  • 多语言网站怎么实现北京seo网络推广
  • 给公司做网站怎么弄技术培训机构排名前十
  • 十大网站免费网络营销平台的主要功能
  • 广州专业的做网站公司seo点击排名器
  • 车辆对比那个网站做的好电子商务网站建设与维护
  • 做ppt的软件怎样下载网站百度推广账户登录首页
  • 永久免费的wap建站平台百度关键词排名查询工具
  • 东莞网站网络百度推广400电话
  • 做网站能用自己电脑吗网站开发
  • 汕头建网站网络营销的招聘信息
  • 如何看网站是用什么程序做的英语培训机构前十名
  • 网站建设痛点杭州百家号优化
  • 自己的网站怎么做下载链接百度霸屏推广
  • 玛沁县wap网站建设公司郑州seo公司
  • go语言有啥好的网站开发框架网站推广计划书范文
  • 教育加盟培训网站建设北京最新发布信息
  • 多用户分销系统一般有哪些建站seo是什么
  • wordpress sns合肥建站公司seo
  • 有哪些网站做的很有特色太原做网站推广的公司
  • python网页版编辑器seo排名怎么优化软件
  • 扬中营销网站建设百度小说官网
  • wordpress current_user_can()seo综合查询站长工具关键词
  • 微信做网站代购sem竞价推广托管代运营公司