将参数传递给GET请求

Aka*_*all 5 rest request go

我似乎无法想象如何做到这一点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})
Run Code Online (Sandbox Code Playgroud)

以下是我的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)
}
Run Code Online (Sandbox Code Playgroud)

我试图使用此代码调用它:

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)

}
Run Code Online (Sandbox Code Playgroud)

以上类似于python的:

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

当我使用python方法(使用params)来调用api时,我看到/get_result?number=7 <nil> <nil>行被打印为一部分request object.但我不会在我的版本中看到它,所以我必须称它为错.我错过了什么?

Dav*_*rth 6

看起来你需要用它Param来做到这一点.

此外,标准库还NewRequest返回一个Request结构,其中包含一个成员URL,该成员Query可以Add在发出请求之前将参数用于查询.