第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Net/http 簡單動態(tài)路由

Net/http 簡單動態(tài)路由

Go
瀟瀟雨雨 2022-07-11 14:35:16
我正在尋找一種使用 net/http 創(chuàng)建動態(tài)路由的簡單方法(沒有諸如 mux 之類的路由器)。這是我當(dāng)前的代碼:http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {        pages := r.URL.Query()["q"]        if len(pages) == 0 {            fmt.Fprintf(w, "§§§§§§§§§§ You need to specify a page §§§§§§§§§§")            return        }        page := pages[0]        var a Page        err := db.QueryRow("SELECT * FROM pages where page = ?", page).Scan(&a.Page, &a.Date, &a.Url)        a.Year = time.Now().UTC().Year()        if err != nil {            if err == sql.ErrNoRows {                fmt.Fprintf(w, "Page %s not found", page)                return            } else {                fmt.Fprintf(w, "Some error happened")                return            }        }        http.Redirect(w, r, a.Url, 301)    })所以現(xiàn)在 URL sample.com/?q= 可以動態(tài)工作。我的目標(biāo)是工作而不必直接使用 r.URL.Query()["q"] /pagename這不是Go url 參數(shù)映射的副本,因為它是單個級別(不是嵌套級別)并且該問題中的許多答案都涉及使用外部庫。
查看完整描述

2 回答

?
白豬掌柜的

TA貢獻1893條經(jīng)驗 獲得超10個贊

如果您不想使用任何第三方庫,則必須自己處理路徑的解析。


首先,您可以這樣做:


http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {


    page := r.URL.Path[1:]

    // do whatever logic you want

    // mind that the page could be "multi/level/path/" as well

})


查看完整回答
反對 回復(fù) 2022-07-11
?
暮色呼如

TA貢獻1853條經(jīng)驗 獲得超9個贊

您可以使用 http.HandleFunc。在這個函數(shù)中,以斜線結(jié)尾的模式定義了一個子樹。您可以使用模式“/page/”注冊處理程序函數(shù),如下例所示。


package main


import (

    "net/http"

    "fmt"

)


func handler(w http.ResponseWriter, r *http.Request) {

    if is_valid_page(r.URL) {

        fmt.Fprint(w, "This is a valid page")

    } else {

        w.WriteHeader(http.StatusNotFound)

        fmt.Fprint(w, "Error 404 - Page not found")

    }

}


func is_valid_page(page string) {

    // check here if page is valid from url 

}



func main() {

    http.HandleFunc("/page/", handler)

    http.ListenAndServe(":8080", nil)

}

您可以在這里找到更多信息:https ://golang.org/pkg/net/http/#ServeMux


查看完整回答
反對 回復(fù) 2022-07-11
  • 2 回答
  • 0 關(guān)注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號