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

建简单网站杭州商城型网站建设

建简单网站,杭州商城型网站建设,山西官方网站有哪些,济南网站优化哪里做的好为什么需要实现自定义 recovery 中间件#xff1f; 在 Golang 的 Web 项目中#xff0c;自定义 recovery 中间件是一种常见的做法#xff0c;用于捕获并处理应用程序的运行时错误#xff0c;以避免整个应用程序崩溃并返回对应格式的响应数据。 很多三方 web 框架#xf…为什么需要实现自定义 recovery 中间件 在 Golang 的 Web 项目中自定义 recovery 中间件是一种常见的做法用于捕获并处理应用程序的运行时错误以避免整个应用程序崩溃并返回对应格式的响应数据。 很多三方 web 框架例如 gin、echo都提供了官方实现的 recovery 中间件但是官方实现的中间件并不一定能满足自己的需求。例如 gin 官方提供的 recovery 中间件发生 panic 后会将当前请求的标准状态码置为 500body 置为空。但是这样的返回数据与格式可能会和自己的项目要求不一致。例如项目发生 panic 后是要求标准状态码依然返回 200body 值为 {code:-1, data:nil,msg:xxx}这种场景下就需要实现自己的 recovery 中间件了。 如何实现自定义 recovery 中间件 如果使用 gin 框架的话就非常简单了因为 gin 提供了完善的中间件功能遵守 gin 的要求实现满足自己项目的功能就可以了简单示例代码如下 package mainimport (github.com/gin-gonic/ginlognet/httpruntime )func Recovery() gin.HandlerFunc {return func(c *gin.Context) {defer func() {if err : recover(); err ! nil {const size 64 10stack : make([]byte, size)stack stack[:runtime.Stack(stack, false)]log.Printf([GinPanic] %s\n, string(stack))c.JSON(http.StatusOK, struct {Code int json:codeData interface{} json:dataMsg string json:msg}{Code: -1,Data: nil,Msg: server panic,})c.Abort()}}()c.Next()} } 使用示例如下 package mainimport (github.com/gin-gonic/ginruntime )func main() {r : gin.New()r.Use(Recovery())r.GET(/test, func(c *gin.Context) {panic(Oops! Something went wrong.)})r.Run(:8080) } 运行起来后访问 /test 触发 panic 后返回了预期的结果如下 $ curl http://127.0.0.1:8080/test {code:-1,data:null,msg:server panic} 接下来再看一个基于原生包  net/http 的一个示例代码如下 package mainimport (fmtlognet/httpruntime/debug )// 自定义的recovery中间件 func recoveryMiddleware(next http.Handler) http.Handler {return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {defer func() {if err : recover(); err ! nil {// 打印错误信息log.Println([Recovery] Panic:, err)// 打印堆栈跟踪信息log.Printf([Recovery] Stack Trace:\n%s\n, debug.Stack())// 返回一个适当的错误响应给客户端fmt.Fprintf(w, {code:-1,data:null,msg:server panic})}}()// 继续处理下一个中间件或路由处理函数next.ServeHTTP(w, r)}) }// 示例的处理函数 func helloHandler(w http.ResponseWriter, r *http.Request) {panic(Oops! Something went wrong.) // 模拟一个错误w.Write([]byte(Hello, Recovery Middleware!)) }func main() {// 创建一个多路复用器mux : http.NewServeMux()// 注册中间件mux.Handle(/test, recoveryMiddleware(http.HandlerFunc(helloHandler)))// 创建服务器server : http.Server{Addr: :8080,Handler: mux,}// 启动服务器log.Println(Server is running on http://localhost:8080)log.Fatal(server.ListenAndServe()) } 小结 Web 应用程序在运行时遇到错误并抛出 panic 时自定义的 recovery 中间件将会捕获panic 并记录对应的错误和堆栈信息避免应用程序崩溃并向客户端发送适当的错误响应数据。对于文本的示例可以根据自己的实际需求进行调整和扩展来实现自定义的 recovery 中间件。
http://www.pierceye.com/news/528035/

相关文章:

  • 网站建设产品服务痘痘如何去除效果好
  • 展会电子商务网站如何建设单页网站如何做
  • 济南软件外包邢台seo服务公司
  • 网站建设2017主流代码语言垂直型电商网站如何做
  • 重庆 网站定制推广产品怎么发朋友圈
  • 网站建设公司初心经典企业网站欣赏
  • 本地网站开发公司网站建设 产品拍照
  • 军队营房基础建设网站wordpress 标签云集
  • 苏州建设建设信息网站如何给自己的店做小程序
  • 沈阳微营销网站制作厨师培训机构 厨师短期培训班
  • 个人备案用作资讯网站网站开发yuanmus
  • 大连网站建设 选领超科技网站建设实录音乐
  • 上海网站建设流wordpress关闭会员
  • 网站运营的目的及意义pc网站怎么适配移动端
  • 网站深圳优化建设10月上海娱乐场所又要关门了
  • 怎么做网页文件打开别的网站河南省城乡和住房建设厅
  • 泰州公司做网站成都网页设计培训中心
  • 网站业务需求文档网站正在建设中 动态
  • 一级a做爰电影片免费网站姑苏区住房建设局网站
  • 宁夏建设教育协会网站医院网站跳出率高
  • 网站建设佰首选金手指二关于网站建设的职位
  • 网站建设公司商务网站项目书中堂东莞网站建设
  • 欧美品牌网站设计wordpress好用的文章编辑器
  • 长春网站建设q479185700強wordpress数学公式的代码
  • 郑州软件app开发公司嘉兴优化网站排名
  • 可以建微信网站的做网站的项目开发计划书
  • 湖北网站建设模板下载太原线上教学
  • 西宁网站建设开发公司开发网站监控工具
  • 外贸网站优势杭州百度快速排名提升
  • 制作个人网站论文ipage wordpress