首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用golang中的大猩猩mux从url读取变量

无法使用golang中的大猩猩mux从url读取变量
EN

Stack Overflow用户
提问于 2018-07-25 14:49:59
回答 3查看 2.6K关注 0票数 4

我正试图用gotest和gomock编写一个单元测试,然后用gomock编写到我用golang编写的、使用大猩猩的restful服务,但是服务无法从url中获取变量。

这是我的要求

代码语言:javascript
复制
req, err := http.NewRequest("GET", "product/5b5758f9931653c36bcaf0a0", nil)

实际端点是product/{id}

当我在下面的代码中进入服务时

代码语言:javascript
复制
params := mux.Vars(req)

当应该将params键映射到5b5758f9931653c36bcaf0a0时,id映射为空

奇怪的部分是端点工作良好,从邮递员。

,我能知道请求有什么问题吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-30 16:18:09

这解决了这个问题。

代码语言:javascript
复制
req = mux.SetURLVars(req, map[string]string{"id": "5b5758f9931653c36bcaf0a0"})
票数 6
EN

Stack Overflow用户

发布于 2018-07-25 19:08:33

由于您使用的是GET请求,所以可以使用http.Get函数,它的工作方式与预期的一样:

代码语言:javascript
复制
package main

import (
    "fmt"
    "net/http"

    "github.com/gorilla/mux"
)

func handle(w http.ResponseWriter, r *http.Request) {
    params := mux.Vars(r)
    fmt.Println(params)
}

func main() {
    m := mux.NewRouter()
    m.HandleFunc("/products/{id}", handle)
    http.Handle("/", m)
    go func() {
        http.ListenAndServe(":8080", nil)
    }()
    _, err := http.Get("http://localhost:8080/products/765")
    // Handle Error
}

如果您真的想使用http.NewRequest,那么该函数实际上不会执行请求,因此您需要如下所示:

代码语言:javascript
复制
req, err := http.NewRequest("GET", "product/5b5758f9931653c36bcaf0a0", nil)
client := &http.Client{}
client.Do(req)
票数 2
EN

Stack Overflow用户

发布于 2020-01-22 06:20:59

在源代码中的一个单独函数中创建mux路由器,并在测试中直接调用它。

源代码:

代码语言:javascript
复制
func Router() *mux.Router {
  r := mux.NewRouter()
  r.HandleFunc("/product/{id}", productHandler)

  return r
}

func main() {
http.Handle("/", Router())
}

测试中:

代码语言:javascript
复制
func TestProductHandler(t *testing.T) {
  r := http.NewRequest("GET", "product/5b5758f9931653c36bcaf0a0", nil)
  w := httptest.NewRecorder()

  Router().ServeHTTP(w, r)
}

在谷歌集团论坛中找到了相关的解决方案。oJ

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51521868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档