Akavall
Akavall

Reputation: 86366

Passing parameters to GET request

I cannot seem to figure how to do this in go.

I was following this tutorial:

https://github.com/parnurzeal/gorequest

and I can pass parameters using Header, which I think is a bad idea.

I am basically looking for go version of python

In [28]: import requests

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

Following is my code for my 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)
}

I am trying to call it using this code:

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)

}

The above is similar to python's:

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

When I am using the python method (using params) to call the api, I see /get_result?number=7 <nil> <nil> line being printed as a part of request object. But am don't see it in my go version, so I must be calling it wrong. What am I missing?

Upvotes: 4

Views: 2394

Answers (1)

David Budworth
David Budworth

Reputation: 11646

Looks like you need to use Param to do this.

Also the standard library's NewRequest returns a Request struct with a member URL that has a function Query that you can use to Add parameters to your query before issuing the request.

Upvotes: 6

Related Questions