第三方库mux的基本实践
第三方库mux的基本实践
veliamsli 发表于3年前
第三方库mux的基本实践
  • 发表于 3年前
  • 阅读 18
  • 收藏 0
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: golang 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
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 4
码字总数 1163
×
veliamsli
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: