35. web服务器实现动态路径

作者: 厚土火焱 | 来源:发表于2017-08-20 23:26 被阅读145次

    有时候,我们希望给不同的用户有不同的服务路径。抛开那些高大上和深层次的原因,最浅显的,可以让用户觉得自己挺受重视。路径名称最好就是用户有关的字符串。我们这次以用户的名字来做个示例。
    首先定义一个结构体 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岁了吗?
    

    相关文章

      网友评论

        本文标题:35. web服务器实现动态路径

        本文链接:https://www.haomeiwen.com/subject/dvpqdxtx.html