我如何在 Go 中使用不记名令牌发出请求

新手上路,请多包涵

我需要在授权请求中使用不记名令牌向 API 发出 GET 请求。我怎么能在围棋中做到这一点?我有以下代码,但我没有成功。

 package main

import (
    "io/ioutil"
    "log"
    "net/http"
)

func main() {
    url := "https://api.globalcode.com.br/v1/publico/eventos"

    resp, err := http.Get(url)
    resp.Header.Add("Bearer", "token")
    if err != nil {
        log.Println("Erro ao realizar request.\n[ERRO] -", err)
    }

    body, _ := ioutil.ReadAll(resp.Body)
    log.Println(string([]byte(body)))
}

原文由 Matheus Alcântara 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 383
1 个回答

要控制 HTTP 客户端标头、重定向策略和其他设置,请创建一个客户端:

 package main

import (
    "io/ioutil"
    "log"
    "net/http"
)

func main() {
    url := "https://api.globalcode.com.br/v1/publico/eventos"

    // Create a Bearer string by appending string access token
    var bearer = "Bearer " + <ACCESS TOKEN HERE>

    // Create a new request using http
    req, err := http.NewRequest("GET", url, nil)

    // add authorization header to the req
    req.Header.Add("Authorization", bearer)

    // Send req using http Client
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        log.Println("Error on response.\n[ERROR] -", err)
    }
    defer resp.Body.Close()

    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        log.Println("Error while reading the response bytes:", err)
    }
    log.Println(string([]byte(body)))
}

客户端的传输通常具有内部状态(缓存的 TCP 连接),因此客户端应该被重用而不是根据需要创建。多个 goroutine 并发使用客户端是安全的。

Client 比 RoundTripper(例如 Transport)级别更高,另外还处理 HTTP 详细信息,例如 cookie 和重定向。

有关 客户端和传输 的更多信息,请查看 net/http 包的 golang 规范

原文由 Himanshu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题