go - 如何处理这些路由 :/example/log and/example/:id/log?

标签 go go-gin

我试过这样的:

router.GET("/example/log", logAllHandler)
router.GET("/example/:id/log", logHandler)

但是 Gin 不允许这样做并且在开始时会出现 panic。

一个想法是写一个中间件来处理这种情况,但是......

最佳答案

我成功了。希望对您有所帮助:

package main

import (
    "fmt"
    "github.com/julienschmidt/httprouter"
    "log"
    "net/http"
)

func logAll(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
    if ps.ByName("id") == "log" {
        fmt.Fprintf(w, "Log All")
    }
}

func logSpecific(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
    fmt.Fprintf(w, "Log Specific, %s!\n", ps.ByName("id"))
}

func main() {
    router := httprouter.New()
    router.GET("/example/:id", logAll)
    router.GET("/example/:id/log", logSpecific)

    log.Fatal(http.ListenAndServe(":8081", router))
}

运行示例

$ curl http://127.0.0.1:8081/example/log
Log All
$ curl http://127.0.0.1:8081/example/abc/log
Log Specific, abc!

关于go - 如何处理这些路由 :/example/log and/example/:id/log?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40343515/

相关文章:

去旅行练习 : Web Crawler - all goroutines are asleep - deadlock

image - 戈朗 : print text in the image

go http template 模板中的额外数据泄漏

html - 如何在 Gin 上返回 html?

json - 如何在 Gin 路由器中呈现静态文件?

go - 如何将 web 模板变量设置为动态 html 和 golang 代码?

go - Gin-Gonic v1.4.0 : ctx. FullPath() 缺失

golang使用ssh连接ssh并打印错误异常

struct - Golang 将函数添加到别处定义的结构

go - 无法从 client-go -/serviceaccount/token : no such file 连接到 kubectl