如何实现Golang的http请求处理中间件

Python010

如何实现Golang的http请求处理中间件,第1张

大多数现代Web组件栈允许通过栈式/组件式中间件“过滤”请求,这样就能干净地从web应用中分离出横切关注点(译注:面向方面程序设计中的概念?)。 本周我尝试在Go语言的 http.FileServer 中植入钩子,发现实现起来十分简便,让我非常惊讶。

让我们从一个基本的文件服务器开始说起:

func main() {

http.ListenAndServe(":8080", http.FileServer(http.Dir("/tmp")))

}

1.在后端服务开发中,如过一个HTTP请求,请求一致占用,将会带来大的性能影响,所以需要为每个请求加上超时设置

2.在go语言中利用 context 进行上下文控制,要想达到精确时间控制,如下:

3.同时我们也可以利用context的context.WithDeadline()函数来进行超时控制