【02-中间件】构建go web框架

栏目: Go · 发布时间: 7年前

内容简介:之前我们项目中遇到的问题是代码重复。在处理请求之前,我们通常需要进行日志记录,异常捕获,用户认证等操作。并且这些操作需要被应用到每一个处理handler中。使用golang的基础包

【02-中间件】构建go web框架

之前我们项目中遇到的问题是代码重复。在处理请求之前,我们通常需要进行日志记录,异常捕获,用户认证等操作。并且这些操作需要被应用到每一个处理handler中。

开始之前回顾一下之前的项目

使用golang的基础包 net/http 创建了一个非常简单的应用

import "net/http"

type DefaultHandler struct {}

func (DefaultHandler) ServeHTTP(w http.ResponseWriter, r *http.Request)  {
    path := r.URL.Path
    _, _ = w.Write([]byte(path + "  wellcome to http server."))
}

func userLogin(w http.ResponseWriter, r *http.Request)  {
    path := r.URL.Path
    _, _ = w.Write([]byte(path + "  wellcome to http server by handleFunc."))
}

func main() {

    http.Handle("/", DefaultHandler{})
    http.HandleFunc("/apis", userLogin)

    _ = http.ListenAndServe("0.0.0.0:8080", nil)
}

http.Handle 接受两个参数,第二个参数类型是http.Handler, 它是一个接口类型包含了 ServeHTTP(ResponseWriter, *Request) 方法,所以任何实现了该方法的类型,都可以当作 http.Handler 来使用,传入 http.Handle 方法中。

现在,我们想要记录每个请求的耗时:

请输入代码

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

学习JavaScript数据结构与算法(第2版)

学习JavaScript数据结构与算法(第2版)

[巴西] Loiane Groner / 邓 钢、孙晓博、吴 双、陈 迪、袁 源 / 人民邮电出版社 / 2017-9 / 49.00元

本书首先介绍了JavaScript 语言的基础知识以及ES6 和ES7 中引入的新功能,接下来讨论了数组、栈、队列、链表、集合、字典、散列表、树、图等数据结构,之后探讨了各种排序和搜索算法,包括冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序、顺序搜索、二分搜索,然后介绍了动态规划和贪心算法等常用的高级算法以及函数式编程,最后还介绍了如何计算算法的复杂度。一起来看看 《学习JavaScript数据结构与算法(第2版)》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

在线进制转换器
在线进制转换器

各进制数互转换器

URL 编码/解码
URL 编码/解码

URL 编码/解码