码迷,mamicode.com
首页 > Web开发 > 详细

构建HTTP中间件

时间:2014-12-03 00:34:59      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:http   ar   os   使用   sp   on   ad   amp   as   

第一种方式,使用类型形式构建HTTP中间件,结构myHandler有个属性是http.Handler类型,这个类型有个ServeHTTP方法

package main

import (
	"fmt"
	"net/http"
)


type myHandler struct {
	Addrhost string
	Headler  http.Handler
}

func (this *myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
	this.Headler.ServeHTTP(w, r)
}

func HandlerFunc(w http.ResponseWriter, r *http.Request) {
	fmt.Println(r.Host)
	w.Write([]byte("你好世界"))
}

func main() {
	my := &myHandler{
		Headler:  http.HandlerFunc(HandlerFunc),
		Addrhost: ":8080",
	}
	http.ListenAndServe(":8080", my)
}



第二种方式,函数方式
package main

import (
	"fmt"
	"net/http"
)

func gethandler(addhost string, headler http.Handler) http.Handler {
	fn := func(w http.ResponseWriter, r *http.Request) {
		fmt.Println(r.Host)
		headler.ServeHTTP(w, r)
	}
	return http.HandlerFunc(fn)
}

func myhandler(w http.ResponseWriter, r *http.Request) {
	w.Write([]byte("你好世界"))
}

func main() {
	hd := gethandler(":8080", http.HandlerFunc(myhandler))
	http.ListenAndServe(":8080", hd)

}



构建HTTP中间件

标签:http   ar   os   使用   sp   on   ad   amp   as   

原文地址:http://my.oschina.net/tongjh/blog/351620

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!