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

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

内容简介:之前我们项目中遇到的问题是代码重复。在处理请求之前,我们通常需要进行日志记录,异常捕获,用户认证等操作。并且这些操作需要被应用到每一个处理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 方法中。

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

请输入代码

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

查看所有标签

猜你喜欢:

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

iGen

iGen

Jean M. Twenge PhD / Atria Books / 2017-8-22 / USD 27.00

A highly readable and entertaining first look at how today’s members of iGen—the children, teens, and young adults born in the mid-1990s and later—are vastly different from their Millennial predecesso......一起来看看 《iGen》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具