1. 背景
继续学习 go
2. 关于 routing 的学习
上一篇 go 用的库是:net/http ,这次我们使用官方的库 github.com/gorilla/mux 来实现 routing。
3. demo示例
package main
import (
"fmt"
"net/http"
"github.com/gorilla/mux"
)
func main() {
r := mux.NewRouter()
r.HandleFunc("/books/{title}/page/{page}", func(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
title := vars["title"]
page := vars["page"]
fmt.Fprintf(w, "You've requested the book: %s on page %s\n", title, page)
})
http.ListenAndServe(":9001", r)
}
4. 执行后的结果
5. gorilla/mux 好处
- 实现了标准的http.Handler接口,所以可以与net/http标准库结合使用,非常轻量;
- 可以根据请求的主机名、路径、路径前缀、协议、HTTP 首部、查询字符串和 HTTP 方法匹配处理器,还可以自定义匹配逻辑;
- 可以在主机名、路径和请求参数中使用变量,还可以为之指定一个正则表达式;
- 可以传入参数给指定的处理器让其构造出完整的 URL;
- 支持路由分组,方便管理和维护。