1. 程式人生 > 其它 >厚土Go學習筆記 | 35. web伺服器實現動態路徑

厚土Go學習筆記 | 35. web伺服器實現動態路徑

有時候,我們希望給不同的使用者有不同的服務路徑。拋開那些高大上和深層次的原因,最淺顯的,可以讓使用者覺得自己挺受重視。路徑名稱最好就是使用者有關的字串。我們這次以使用者的名字來做個示例。

首先定義一個結構體 Person

type Person struct {
    Name    string
    Age     int
}

然後我們定義一下這個結構體的方法

func (ps *Person) sayCN(rw http.ResponseWriter, req *http.Request) 

剩下的就是 http.Handler 的實現了。因為要動態,所以路徑那裡,我們寫成了這樣

"/"+p.Name

已經有了整體的概念了吧?我們來看一下完整程式碼

package main

import (
    "net/http"
    "fmt"
)

type Person struct {
    Name    string
    Age     int
}

func (ps *Person) sayCN(rw http.ResponseWriter, req *http.Request)  {
    fmt.Fprintf(rw, "你好啊,%v,你%d歲了嗎?n", ps.Name, ps.Age)
}

func main() {
    p := &Person{"joel", 45}
    http.HandleFunc("/"+p.Name, p.sayCN)
    http.ListenAndServe(":4000", nil)
}

由於是 web 伺服器應用,程式執行後,需要使用瀏覽器訪問

http://192.168.1.105:4000/joel

地址中的 joel ,就是使用者的名字了。你可以試著改改使用者資訊,看一下路徑也會隨之變化的。

當前程式碼的執行結果是

你好啊,joel,你45歲了嗎?