golang http

函数 说明
http.ServeMux 是 Go 语言标准库中的一个多路复用器(multiplexer)。它用于路由和处理 HTTP 请求,将请求分发到相应的处理器函数。
http.HandleFunc 是 Go 语言标准库中的一个函数,用于注册处理器函数来处理 HTTP 请求。它是对 http.ServeMux 的简化封装,方便快速实现路由功能。
http.Handler 接口定义了一个方法 ServeHTTP,该方法接收两个参数:ResponseWriter 和 Request。它用于处理传入的 HTTP 请求并生成相应的 HTTP 响应。
http.ListenAndServe 是 Go 语言标准库中的一个函数,用于启动一个 HTTP 服务器并开始监听指定的地址和端口,以接收和处理传入的 HTTP 请求。

一、使用 http.ServeMux 的一些基本操作:

1、创建一个新的 ServeMux:

cpp 复制代码
mux := http.NewServeMux()

2、注册处理器函数并指定 URL 路径:

cpp 复制代码
mux.HandleFunc("/hello", helloHandler)
mux.HandleFunc("/foo", fooHandler)
//在上面的例子中,当 /hello 路径接收到请求时,helloHandler 函数将被调用;当 /foo 路径接收到请求时,fooHandler 函数将被调用。

3、创建一个 HTTP 服务器并指定 ServeMux 作为处理器:

cpp 复制代码
server := &http.Server{
    Addr:    ":8080",
    Handler: mux,
}
//创建了一个监听 8080 端口的 HTTP 服务器,并将 mux 作为处理器。

4、启动服务器:

cpp 复制代码
err := server.ListenAndServe()
if err != nil {
    panic(err)
}
//这会开始监听指定的端口,并开始接受和处理请求。

完整示例:

cpp 复制代码
package main

import (
	"net/http"
	"time"
)

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

	server := &http.Server{
		Addr:         ":8080",
		Handler:      http.TimeoutHandler(mux, 2*time.Second, "Timeout"),
		ReadTimeout:  5 * time.Second,
		WriteTimeout: 10 * time.Second,
	}

	err := server.ListenAndServe()
	if err != nil {
		panic(err)
	}
}

func handler(w http.ResponseWriter, r *http.Request) {
	time.Sleep(3 * time.Second) // 模拟长时间处理的操作

	w.Write([]byte("Hello, World!"))
}
cpp 复制代码
package main

import (
	"net/http"
	"time"
)

func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe(":8081", nil)
}

func handler(w http.ResponseWriter, r *http.Request) {
	w.Write([]byte("Hello, World!"))
}

-------------end

相关推荐
lanhuazui109 分钟前
雅讯SDK 怎么确认测试的每个http方法是否成功
http
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.1 小时前
双主模式实现HTTP与MySQL高可用
网络协议·mysql·http
Z.风止3 小时前
Go-learning(1)
开发语言·笔记·后端·golang
2501_915921433 小时前
不用 Xcode 上架 iOS,拆分流程多工具协作完成 iOS 应用的发布准备与提交流程
android·macos·ios·小程序·uni-app·iphone·xcode
猿小羽3 小时前
MCP Server 运行模式入门(Streamable HTTP / stdio)
http·ai·ai实战·mcp·mcp server
小二·3 小时前
Go 语言系统编程与云原生开发实战(第7篇)分布式系统核心能力:配置中心 × 链路追踪 × 熔断降级(生产级落地)
开发语言·云原生·golang
lead520lyq3 小时前
Golang Grpc接口调用实现账号密码认证
开发语言·后端·golang
小二·3 小时前
Go 语言系统编程与云原生开发实战(第6篇)云原生部署实战:Docker 镜像瘦身 × K8s 部署 × Helm 一键发布
docker·云原生·golang
wljt5 小时前
HTTP和openFeign
网络·网络协议·http
bjxiaxueliang5 小时前
一文掌握SpringBoot:HTTP服务开发从入门到部署
spring boot·后端·http