go web编程由浅入深3——用我们自定义的Server

本文深入探讨了使用Go语言自定义HTTP服务的过程,包括利用net库实现路由、自定义ServerMux对象及ServeHTTP接口,最后通过自定义Server对象调用ListenAndServe接口实现HTTP服务。文章详细介绍了三种自定义HTTP服务的情景。

还记得之前有个http.ListenAndServe吗,现在来看看它的定义:

func ListenAndServe(addr string, handler Handler) error {
	server := &Server{Addr: addr, Handler: handler}
	return server.ListenAndServe()
}

可以看出,原来内部是实现了一个Server结构体,然后调用这个结构体对象的ListenAndServe函数。下面我们就自己来实现一个Server并用我们自定义的Server来实现一个HTTP服务,代码如下:

package main

import (
	"io"
	"net/http"
)

func main () {
	mux := http.NewServeMux()
	mux.HandleFunc("/hi", sayHi)

	myServer := &http.Server{
		Addr: "127.0.0.1:8080",
		Handler: &MyHandler{mux},
	}
	//myServer.
	myServer.ListenAndServe()
}

type MyHandler struct {
	Mux *http.ServeMux
}

func (mh *MyHandler)ServeHTTP(w http.ResponseWriter, r *http.Request) {
	mh.Mux.ServeHTTP(w, r)
}

func sayHi(w http.ResponseWriter, r *http.Request) {
	io.WriteString(w, "hi, this is cutom server")
}

到此,go web编程的第一阶段探索就到此告一段落。总结一下:

(1)可以用net库底层的默认ServeMux对象实现路由,我们只需要写好url路径的处理函数注册进去就可以了;

(2)我们自定义ServerMux对象,并实现ServeHTTP接口,同时可以自定义url路径处理函数。

(3)我们自定义Server对象,并调用该对象的ListenAndServe接口实现HTTP服务。

三种情景由浅入深自定义了HTTP服务的部分服务。

(全文完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值