当前位置: 首页 > 面试题库 >

设置所有处理程序的标头

鄢英哲
2023-03-14
问题内容

现在看起来像这样

func cacheHandler(h http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Cache-Control", "max-age=1800")
        h.ServeHTTP(w, r)
    })
}
http.Handle("/", cacheHandler(http.FileServer(http.Dir("./template/index"))))
http.HandleFunc("/json", sendJSONHandler)
http.HandleFunc("/contact", contactHandler)
http.Handle("/static/", http.StripPrefix("/static/", cacheHandler(http.FileServer(http.Dir("./template/static")))))
http.ListenAndServe(":80", nil)

有没有办法一次将缓存标头设置给所有处理程序?


问题答案:

包裹多路复用器

  http.ListenAndServe(":80", cacheHandler(http.DefaultServeMux))

而不是单个处理程序。

请注意,ListendAndServe使用http.DefaultServeMux的处理程序时的处理程序参数是nil。另外,将http.Handlehttp.HandleFunc处理程序添加到http.DefaultServeMux



 类似资料:
  • 请查看下面位于扩展类内部的代码: null

  • 日志-消息历史记录路由ID处理器ID处理器运行(ms)[sdPoll][sdPoll][Timer://sdPoll?FixedRate=true&period=60000][21176][null][onCompletion1][onCompletion][106][sdPoll][process7][Ref:RefProcessor][21067][null][process3][Ref:Ge

  • 我试图执行一些适用于代码中所有的通用逻辑。我知道我可以编写一个来拦截快乐路径。但是,我想连接到异常处理生命周期中,以便在呈现错误响应之前执行一些常见的逻辑,比如日志记录。 在Spring Boot/Spring MVC中有这样做的方法吗?如果可能的话,我希望避免为此编写servlet过滤器。

  • 我有这个单声道代码: 当validate方法抛出ValidationException时,将同时调用handleValidation异常和handleException。我只希望调用handleValidationException。为什么会发生这种情况?如何防止handleException被调用?

  • 如果为android设备设置代理设置,它们是否适用于设备上的所有应用程序(包括浏览器)?或者它们只适用于浏览器? 我问的原因是,当你去更改Android设备上的代理设置有这个消息,它让我困惑:

  • 通过定义节流限制来解决:这里定义的相同:Spring batch Multithreading:节流限制影响 我注意到当我用20k条记录运行批处理时,一些线程已经开始处理,但在10个请求后就停止了。但是,其他线程正在正常处理。你能建议一下问题是什么吗?如果我保持corepoolsize=threadpoolsize=5,那么所有的线程都是正确分布的。