gpt4 book ai didi

http - 如何通过Postman在go lang中处理GET操作(CRUD)?

转载 作者:数据小太阳 更新时间:2023-10-29 03:28:09 24 4
gpt4 key购买 nike

我想执行一个获取操作。我将名称作为资源传递给 URL。我在 Postman 中点击的 URL 是:localhost:8080/location/{titan rolex}(我在下拉列表中选择了 GET 方法)在 Postman 中命中的 URL 上,我正在执行 GetUser func() with body as:

func GetUser(rw http.ResponseWriter, req *http.Request) {

}

现在我希望在 GetUser 方法中获取资源值,即“titan rolex”。我如何在 golang 中实现这一点?

在 main() 中,我有这个:

http.HandleFunc("/location/{titan rolex}", GetUser)

提前致谢。

最佳答案

您正在做的是绑定(bind)完整 路径/location/{titan rolex}GetUser处理.

你真正想要的是绑定(bind)/location/<every possible string>由一个处理程序处理(例如 LocationHandler )。

您可以使用标准库或其他路由器来做到这一点。我将介绍两种方式:

  1. 标准库:

    import (
    "fmt"
    "net/http"
    "log"
    )

    func locationHandler(w http.ResponseWriter, r *http.Request) {
    name := r.URL.Path[len("/location/"):]
    fmt.Fprintf(w, "Location: %s\n", name)
    }

    func main() {
    http.HandleFunc("/location/", locationHandler)
    log.Fatal(http.ListenAndServe(":8080", nil))
    }

    但是请注意,更复杂的路径(例如 /location/<every possible string>/<some int>/<another string> )以这种方式实现起来会很乏味。

  2. 另一种方法是使用 github.com/julienschmidt/httprouter ,特别是如果您更频繁地遇到这些情况(并且路径更复杂)。

    这是您的用例示例:

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

    func LocationHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
    fmt.Fprintf(w, "Location: %s\n", ps.ByName("loc"))
    }

    func main() {
    router := httprouter.New()
    router.GET("/location/:loc", LocationHandler)

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

    请注意 httprouter对处理程序使用略有不同的签名。这是因为,如您所见,它也将这些参数传递给函数。

哦,还有一点,你可以直接点击 http://localhost:8080/location/titan rolex使用您的浏览器(或其他东西) - 如果其他东西足够好,它将 URLEncode 为 http://localhost:8080/location/titan%20rolex .

关于http - 如何通过Postman在go lang中处理GET操作(CRUD)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33254561/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com