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

安徽建站费用y1s华硕wordpress

安徽建站费用,y1s华硕wordpress,网站虚拟主机,有特色的网站设计为什么需要中间件 我们可能需要对每个请求/返回做一些特定的操作#xff0c;比如 记录请求的 log 信息在返回中插入一个 Header部分接口进行鉴权 这些都需要一个统一的入口。这个功能可以通过引入 middleware 中间件来解决。Go 的 net/http 设计的一大特点是特别容易构建中间…为什么需要中间件 我们可能需要对每个请求/返回做一些特定的操作比如 记录请求的 log 信息在返回中插入一个 Header部分接口进行鉴权 这些都需要一个统一的入口。这个功能可以通过引入 middleware 中间件来解决。Go 的 net/http 设计的一大特点是特别容易构建中间件。apiserver 所使用的 gin 框架也提供了类似的中间件。 gin里面的中间件 在 gin 中可以设置 3 种类型的 middleware 全局中间件 router : gin.New() // 添加自定义的 logger 中间件 router.Use(middleware.Logger(), gin.Recovery())单个路由中间件 userRouter.GET(/profile/, middleware.Auth(), handler.UserProfile) userRouter.POST(/update, middleware.Auth(), handler.UpdateUserProfile)群组中间件 authorized : router.Group(/, MyMiddelware()) // 或者这样用 authorized : router.Group(/) authorized.Use(MyMiddelware()) {authorized.POST(/login, loginEndpoint) }在请求和返回的 Header 中插入 X-Request-Id X-Request-Id 值为 32 位的 UUID用于唯一标识一次 HTTP 请求 func RequestId() gin.HandlerFunc{return func(c *gin.Context) {requestId : c.Request.Header.Get(X-Request-Id)if requestId{v4: uuid.NewV4()requestIdv4.String()}c.Set(X-Request-Id, requestId)c.Writer.Header().Set(X-Request-Id, requestId)c.Next()} 日志中间件 获取请求路径并且进行匹配只对业务逻辑进行日志记录 path : c.Request.URL.Pathreg: regexp.MustCompile((/v1/user|/login))if !reg.MatchString(path) {return}// Skip for the health check requests.if path /sd/health || path /sd/ram || path /sd/cpu || path /sd/disk {return}获取请求中的IP等信息并且给请求重新赋值请求读取完会被置空 var bodys []byteif c.Request.Body!nil{bodys, _ ioutil.ReadAll(c.Request.Body)}c.Request.Body ioutil.NopCloser(bytes.NewBuffer(bodys))method : c.Request.Methodip : c.ClientIP() 将响应重定向到指定IO流并且提取里面的信息 blw : bodyLogWriter{body: bytes.NewBufferString(),ResponseWriter: c.Writer,}c.Writerblwc.Next()var response handler.Responseif err : json.Unmarshal(blw.body.Bytes(), response); err ! nil {log.Println(err, response body can not unmarshal to model.Response struct, body: %s, string(blw.body.Bytes()))code errno.InternalServerError.Codemessage err.Error()} else {code response.Codemessage response.Message}}func (w bodyLogWriter) Write(b []byte) (int, error) {w.body.Write(b)return w.ResponseWriter.Write(b)将从请求与响应中提取的信息进行输出 log.Printf(%-13s | %-12s | %s %s | {code: %d, message: %s}, sub, ip, pad.Right(method, 5, ), path, code, message)测试 X-Request-id 可以看到HTTP 返回的 Header 有 32 位的 UUID 日志 每个请求的日志信息分为4个部分 耗时请求 IPHTTP 方法 HTTP 路径返回的 Code 和 Message
http://www.pierceye.com/news/561289/

相关文章:

  • 杭州做网站哪家好在线设计平台都有哪些比较好用的
  • 内外网网站栏目建设方案专门做电容的网站
  • 一般网站字体多大有没有做公司网站的
  • 做国外进口衣服的网站好怎么推广公众号
  • 安县建设局网站网站建设分金手指排名一
  • 社区网站制作教程社交媒体营销
  • 云南省建设工程质量监督管理站网站房产网站推广
  • 做网站挣钱吗营销导向的企业网站建设步骤
  • 优化网站 优帮云网站是意识形态建设
  • 网站内容建设运维服务wordpress envato主题
  • 响应式网站的几种尺寸推广网站的几种方法
  • php 打开网站东莞网站建设网页推广
  • 正品海外购网站有哪些公司网站开发费用兴田德润在哪儿
  • 怎样做编辑发到网站自由建网站的网络程序
  • 网站开发 卡片cms建站系统 下载
  • 新浪门户网站是谁做的科技网站建设
  • 免费网站建设合同书山西网站建设企业
  • 网站建设空间什么意思学做网站什么语言合适
  • 网站开发的形式有( )友情链接英文
  • 帝国网站管理系统前台免费photoshop下载
  • 深圳一百讯网站建设wordpress汉化包
  • 建设一个班级网站的具体步骤自己的网站源代码一片空白
  • 初创公司 建网站wordpress 模板获取数据库
  • 怎么在网站做推广不要钱六安网约车平台
  • 申晨推荐的营销网站做卖挖掘机的网站
  • 网站广告牌制作教程来几个好看的网站
  • php企业网站源码蓝色印度喜欢用什么框架做外贸网站
  • 网站建设教程最新资讯wordpress说说伪静态
  • 长春建站程序网络营销推广方法脑24金手指效率高
  • 专门做房地产设计的图片网站在安徽省住房和城乡建设厅网站