在http vs mux上使用HandleFunc

问题描述 投票:0回答:1

我是新手,想要设置一些路由,以及cors。我一直在看两种风格,一种是用NewServeMux初始化多路复用器然后用HandleFunc分配处理程序,另一种是在HandleFunc上直接使用http。这就是我的意思:

mux := http.NewServeMux()
mux.HandleFunc("/api", apiFunc)
mux.HandleFunc("/", indexFunc)

VS

http.HandleFunc("/api", apiFunc)
http.HandleFunc("/", indexFunc)
http.ListenAndServe("127.0.0.1:3001", nil)

这些方法有什么不同吗?如果他们完成类似的事情,是一个更常见/务实吗?

go
1个回答
2
投票

http.HandleFunc等人将你的处理程序应用到ServeMux包中持有的http的包全局实例,然后http.ListenAndServe开始。您也可以像在第一个示例中那样创建自己的实例,这样可以提供更多控件并使单元测试更容易。最后,选择是你的;方便函数和包全局变量可能适用于维护周期有限的小型项目,但对于较大或较长寿的项目,我通常建议管理自己的ServeMuxServer实例。

© www.soinside.com 2019 - 2024. All rights reserved.