我正在编写一个简单的rest api服务器,但无法使用net / http获取路由动态url
其中名称可以是任何字符串。
这是我的尝试:
func viewIndex(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, 'html')
}
http.HandleFunc("/book/{name}", view)
这不起作用, HandleFunc 的文档中有一些神秘的注释:
ServeMux的文档说明了如何匹配模式。
最佳答案
这是一个可行的解决方案。
它唯一以 / 结尾的模式将被视为所有URL的前缀匹配器。
因此, / book / 模式将匹配:
示例简化代码:
package main
import (
"fmt"
"strings"
"net/http"
)
func book(name string) {
fmt.Printf("requesting book '%s'\n",name);
}
func view(w http.ResponseWriter, r *http.Request) {
url := r.URL.String()
if strings.HasPrefix(url, "/book/"){
name := url[6:]
book(name)
fmt.Fprint(w, name)
}
}
func main() {
http.HandleFunc("/book/", view)
http.ListenAndServe("localhost:8080", nil)
}
关于rest - 去lang net/http请求模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62338665/