go基础之路由

一个普通的web服务如下

package main

import (
"fmt"
"net/http"
)

func handler(writer http.ResponseWriter, request *http.Request) {
fmt.Fprintf(writer, "hello world!")
}

func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8000", nil)

}

访问http://localhost:8000

输出hello world!

如果想使用/pro/1来访问id=1的pro信息就无法实现,需要使用第三方库

go get -u github.com/gorilla/mux

func main() {
r := mux.NewRouter()
r.HandleFunc("/login", login)
r.HandleFunc("/products/{key}", ProductHandler)
r.HandleFunc("/articles/{category}/", ArticlesCategoryHandler)
r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler)
http.Handle("/", r)
http.ListenAndServe(":9091", nil)
}

这里面key,category都是属于变量,只要符合上面的路由路径,就是跳到相应的函数中,如何获取key,category这样的变量呢?

获取变量方式

func ArticlesCategoryHandler(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
w.WriteHeader(http.StatusOK)
fmt.Fprintf(w, "Category: %vn", vars["category"])
}

如果只是需要POST请求

r.HandleFunc("/login", login).Methods("POST")

文章来源于互联网:go基础之路由

THE END
分享
二维码