rest - 将参数传递给 GET 请求

标签 rest go request

我似乎不知道如何在 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>作为 request object 的一部分打印的行.但是在我的 go 版本中看不到它,所以我一定是说错了。我错过了什么?

最佳答案

看起来您需要使用 Param做这个。

还有标准库的 NewRequest返回一个包含成员 URL 的 Request 结构有一个函数 Query你可以用来Add在发出请求之前将参数添加到您的查询中。

关于rest - 将参数传递给 GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33469917/

相关文章:

javascript - mongodb 和 node.js 驱动程序未连接聊天休息 api

go - 如何使用 Gorilla Mux 在 GET 请求中进行可选查询?

pointers - go:使用指针允许更改结构的内容。为什么?

http - 如何知道 API 响应是否已更改?

c# - 使用 HTTP GET 请求从 Web Api 返回文件内容

java - REST 和 RESTful WS

jsp - 在jsp中获取上下文路径的问题?

javascript - request.execute(function(resp){}); 是什么意思?在 JavaScript 中?

mysql连接休息服务

go - 你如何在 GoLang 的模拟中模拟错误返回值?