首页 > 解决方案 > 如何在 net/http 中编写 /api/v1/users/id/{id}?

问题描述

例如,我想做/api/v1/users/id/{id}.

目前,我有这个:

mux := http.NewServeMux()
mux.Handle("/api/v1/users", HandleUsersV1{db: db, mux: mux})
log.Fatal(http.ListenAndServe(fmt.Sprintf("%s%d", ":", portNumber), mux))

我想:

mux := http.NewServeMux()
mux.Handle("/api/v1", HandleV1{})

然后在HandleV1

mux.HandleFunc("/users/{id}", handler)

我知道 Gorilla Mux 可以为我做这件事PathPrefix,但我更喜欢net/http

标签: go

解决方案


该标准net/http不支持动态路径段,因此/{id}不会像您想象的那样工作。至于前缀的东西,你可以使用这个https://golang.org/pkg/net/http/#StripPrefix

v1mux := http.NewServeMux()
v1mux.HandleFunc("/users/", handler)

mux := http.NewServeMux()
mux.Handle("/api/v1/", http.StripPrefix("/api/v1", v1mux))

log.Fatal(http.ListenAndServe(fmt.Sprintf("%s%d", ":", portNumber), mux))

推荐阅读