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:

mux := http.NewServeMux()

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

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

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

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

4、启动服务器:

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

完整示例:

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!"))
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]中的代码是一个用于限制读取数据大小的函数。它首先读取指定大小的数据,然后再次读取一个字节,如果返回的错误是EOF,则表示数据已经读取完毕。如果返回的错误不是EOF,则表示数据超过了指定的大小。\[1\] 引用\[2\]中的代码是一个使用golang.org/x/net/websocket包实现的简单的WebSocket服务器。它通过接收客户端发送的消息,并将接收到的消息发送回客户端。\[2\] 引用\[3\]中的代码是一个使用golang.org/x/net/websocket包的前端代码。它在接收到消息时会报错。\[3\] 根据提供的引用内容,无法确定具体的问题是什么。请提供更具体的问题描述,以便我能够给出更准确的答案。 #### 引用[.reference_title] - *1* [golang http 1.1 max body实现](https://blog.csdn.net/u014763610/article/details/122852010)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Go websocket EOF bug](https://blog.csdn.net/happy_teemo/article/details/114317294)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值