golang net/http 包简介

本文深入探讨了使用Go语言创建简单HTTP服务器的过程。通过具体代码示例,详细讲解了如何利用golang的http包实现基本的web服务,包括监听端口、处理请求和响应等关键环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kubernetes的Api Server中用到了golang的http包,故而做下简单的了解。

package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	http.HandleFunc("/", helloworld)
	err := http.ListenAndServe(":9090", nil)
	if err != nil {
		fmt.Println("ListenAndServe: ", err)
	}
}

func helloworld(w http.ResponseWriter, request *http.Request) {
	result := "HelloWorld\n"
	result = result + "RequestURI: " + request.RequestURI

	io.WriteString(w, result)
}

以上代码开启了一个简单的web服务,应用启动后访问如下地址:

http://127.0.0.1:9090/?we=12

会给出如下的输出

HelloWorld
RequestURI: /?we=12
//第一个参数是监听的地址和端口
//第二个参数是一个Handler,实现了ServeHTTP(ResponseWriter, *Request)方法,
//客户端的请求会交由这个方法进行处理。
//如果传nil的话,会采用http包默认的handler,DefaultServeMux来进行处理。
//DefaultServeMux可以认为是一个路由管理器,
//它的ServeHTTP方法实现 会根据客户端请求的路径来将请求路由到不同的HandlerFunc上去。
http.ListenAndServe(":9090", nil)

//为DefaultServeMux注册一个HandleFunc
http.HandleFunc("/", helloworld)

具体的代码:
// HandleFunc registers the handler function for the given pattern
// in the DefaultServeMux.
// The documentation for ServeMux explains how patterns are matched.
func HandleFunc(pattern string, handler func(ResponseWriter, *Request)) {
	DefaultServeMux.HandleFunc(pattern, handler)
}

除了采用默认的路由分发器DefaultServeMux,也可以构建自己的Mux,如下:

package main

import (
	"io"
	"net/http"
)

func main() {
	//新建一个路由管理器,
	mux := http.NewServeMux()
	//绑定路径和处理函数
	mux.HandleFunc("/", helloworld)

	server := &http.Server{
		Addr:":9090",
		Handler:mux,
	}

	server.ListenAndServe()
}

func helloworld(w http.ResponseWriter, request *http.Request) {
	result := "HelloWorld\n"
	result = result + "RequestURI: " + request.RequestURI

	io.WriteString(w, result)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值