七课用golang封装自己web框架nux:第一课,学习golang路由 | go 技术论坛-江南app体育官方入口

前言

在学习golang的时候,看了极客兔兔的 后,感觉很受用,因此写下如下文章。

  • 一是为了学习go的基础知识和http框架。
  • 二是在使用框架时,觉得处理麻烦,不符合自己工作逻辑,干脆自己写一个框架。
  • 三是课程比较简单,因为go1.22标准库已实现相关功能,所以文章不涉及算法和高复杂度操作,自认为比较适合golang初学者,本人也是个初学者,有什么讲不到位的请留言交流

首先学习一下go1.22标准库中新增的http.servermux路由复用器

nux_test.go

package nux
import (
    "encoding/json"
    "log"
    "net/http"
    "testing"
)
func testhttp(t *testing.t) {
    //新建路由复用器
    mux := http.newservemux()
    //处理路由方法,
    mux.handlefunc("post /api/test/{name}", helloworld())
    //启动路由服务
    http.listenandserve(":8000", mux)
}
func helloworld() func(http.responsewriter, *http.request) {
    return func(w http.responsewriter, r *http.request) {
        //http标准库新增方法,{}可用pathvalue匹配路由
        name := r.pathvalue("name")
        log.println("test 3")
        log.println(name)
        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
jack

前端显示:

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

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