猿问

将参数传递给 GET 请求

我似乎无法弄清楚如何在go.


我正在关注本教程:


https://github.com/parnurzeal/gorequest


我可以使用 传递参数Header,我认为这是一个坏主意。


我基本上是在寻找go版本python


In [28]: import requests


In [29]: r = requests.get("http://localhost:8000/get_result", params={"number": 40})

以下是我的 REST API 代码:


package main


import (

    "net/http"

    "strconv"

    "fmt"

)


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


    fmt.Println(r)


    err := r.ParseForm()

    if err != nil {

        panic(err)

    }


    number_string := r.Form["number"][0]

    // number_string := r.Header["Number"][0] header solution

    number, err := strconv.Atoi(number_string)

    if err != nil {

        panic(err)

    }


    fmt.Fprint(w, fmt.Sprint(number * 5))


}


func main() {

    http.HandleFunc("/get_result", make_result)

    http.ListenAndServe("localhost:8000", nil)

}

我正在尝试使用以下代码调用它:


package main


import(

    "fmt"    

    "reflect"

    "github.com/parnurzeal/gorequest"


)


func main() {


    resp, body, errs := gorequest.New().

        Get("http://localhost:8000/get_result").

        Set("Number", "7").      // Changes the Header 

        Type("form").            // These two lines appear 

        Send(`{"number": 5}`).   // to be irrelevant 

        End()



    fmt.Println(errs)

    fmt.Println(resp)

    fmt.Println(body)


}

以上类似于python的:


In [34]: r = requests.get("http://localhost:8000/get_result", headers={"Number": 7})

当我使用 python 方法(使用参数)调用 api 时,我看到/get_result?number=7 <nil> <nil>line 被打印为request object. 但是在我的 go 版本中没有看到它,所以我一定是错误地调用了它。我错过了什么?


BIG阳
浏览 173回答 1
1回答

12345678_0001

看起来您需要使用它Param来执行此操作。此外,标准库NewRequest返回一个 Request 结构,URL其中包含一个函数Query,您可以Add在发出请求之前使用该函数作为查询的参数。
随时随地看视频慕课网APP

相关分类

Go
我要回答