七课用golang封装自己web框架nux:第二课,封装nux结构体 | go 技术论坛-380玩彩网官网入口

学习gin 和 gee 的封装方法,我们创建nux结构体

nux.go
创建nux结构体,封装*http.servemux

package nux
import "net/http"
type nux struct {
    mux *http.servemux
}
func new() *nux {
    return &nux{ mux: http.newservemux(), }
}
func (n *nux) handlefunc(router string,
    handle func(http.responsewriter, *http.request)) {
        n.mux.handlefunc(router, handle)
}
func (n *nux) start(addr string) error {
    return http.listenandserve(addr, n.mux)
}

nux_test.go

func testhttp(t *testing.t) {
    n := new()
    n.handlefunc("post /api/test", helloworld())
    n.start(":8000")
}
func helloworld() func(http.responsewriter, *http.request) {
    return func(w http.responsewriter, r *http.request) {
        log.println("test 3")
        data := map[string]interface{}{
            r.method: r.url.path,
        }
        w.header().set("content-type", "application/json")
        w.writeheader(http.statusok)
        encoder := json.newencoder(w)
        if err := encoder.encode(data); err != nil {
            http.error(w, err.error(), http.statusinternalservererror)
        }
    }
}

访问

终端打印:

test 3

前端显示:

{
    "post": "/api/test"
}
本作品采用《cc 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
网站地图