- 请求是长路径优先。如果没有匹配到,所有的请求都会匹配到
/ http.ListenAndServe(":8080", nil)第二个参数为nil,表示使用默认的路由。如果第三方代码也注册这个请求,会导致网络被劫持http.NewServeMux()自定义Mux才是生产环境使用的。
go
package main
import (
"net/http"
"fmt"
)
func main(){
http.HandleFunc("/",indexHandle)
http.HandleFunc("/login", loginHandle)
err := http.ListenAndServe(":8080", nil)
fmt.Println(err)
}
func indexHandle(res http.ResponseWriter, req *http.Request){
path := req.URL.Path
if path != "/" {
fmt.Fprintln(res, "Not found")
}
fmt.Fprintln(res,"index")
}
func loginHandle(res http.ResponseWriter, req *http.Request){
fmt.Fprintln(res,"login")
}
go
package main
import "net/http"
func main() {
// *http.ServeMux
newMux := http.NewServeMux()
newMux.HandleFunc("/", Index)
_ = http.ListenAndServe(":8080", newMux)
}
func Index(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("hello world"))
}
scss
package main
import (
"net/http"
)
func main(){
// *net.ServerMux
serveMux := http.NewServeMux()
serveMux.HandleFunc("/",Index)
serveMux.HandleFunc("/login",Login)
http.ListenAndServe(":8080", serveMux)
}
func Index(w http.ResponseWriter,r *http.Request){
if r.URL.Path != "/" {
http.NotFound(w,r)
return
}
html := `
<h1> 欢迎来到博客网</h1>
<p>首页<a href="/"> </a></p>
<p>登录<a href="/login"> </a></p>
`
w.Write([]byte(html))
}
func Login(w http.ResponseWriter, r *http.Request){
html := `
<h1><a href="/">回到首页</a><h1>
<p><input type="text"/></p>
`
w.Write([]byte(html))
}