2015-11-02 213 views
5

我似乎无法确定如何在go中执行此操作。将参数传递给GET请求

我下面这个教程:

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法(使用PARAMS)来调用API,我看到被印刷/get_result?number=7 <nil> <nil>线的request object的一部分。但是我没有看到它在我的版本中,所以我必须说它错了。我错过了什么?

回答

6

看起来你需要使用Param来做到这一点。

也是标准库的NewRequest回报请求结构与具有功能Query,你可以发出请求之前使用Add参数来查询一个成员URL