第三方库mux的基本实践

近期公司在搞季度考核,一直在忙新功能的开发和指导新人入门。

golang中有一个ServeMux标准库,这个不说明,本文章主要介绍gorilla/mux包这个强大的url路由器与调度器。

支持URL解析中访问方法与字段,通过正则表达式匹配,也可以设置网站名,还可以自己组URL等其它动作。

代码面前没有隐私。。

package main

import (
    "fmt"
    "github.com/gorilla/mux"
    "net/http"
)

func main() {
    fmt.Println("hello go world!!")
    r := mux.NewRouter()
    r.HandleFunc("/", HomeHandler)
    s := r.PathPrefix("/products").Subrouter()

    s.HandleFunc("/{key}", ProductsHandler)
    r.HandleFunc("/articles/{category}", ArticlesHandler)
    r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticlesHandler)

    http.Handle("/", r)

    http.ListenAndServe(":8080", nil)

}

func HomeHandler(http.ResponseWriter, *http.Request) {
    fmt.Println("test home handler")
}

func ProductsHandler(http.ResponseWriter, *http.Request) {
    fmt.Println("test product handler")
}

func ArticlesHandler(http.ResponseWriter, *http.Request) {
    fmt.Println("test articles handler")
}


匹配访问方法与字段:

s.HandleFunc("/articles/{category}/{id:[0-9]+}"), ArticleHandler)


内部路由功能

r := mux.NewRouter()
s := r.PathPrefix("/products").Subrouter()
// "/products/"
s.HandleFunc("/", ProductsHandler)
// "/products/{key}/"
s.HandleFunc("/{key}/", ProductHandler)
// "/products/{key}/details"
s.HandleFunc("/{key}/details", ProductDetailsHandler)


URL组合:

url, err := r.Get("article").URL("category", "technology", "id", "42")


设置网站名:

r.Host("{subdomain}.domain.com")



你可能感兴趣的:(golang,mux)