首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Golang中使用JWT获取响应

如何在Golang中使用JWT获取响应
EN

Stack Overflow用户
提问于 2018-07-08 08:48:35
回答 2查看 961关注 0票数 2

我正在尝试从使用JSON Web token的API获取响应,我需要使用头部:{ Authorization:“header”},但我希望保持正在使用的http.Client的超时。我怎么能做到呢?

代码语言:javascript
复制
    var myClient = &http.Client{Timeout: 10 * time.Second}

func getJson(url string, target interface{}) error {
    r, err := myClient.Get(url)
    if err != nil {
        return err
    }
    defer r.Body.Close()

    return json.NewDecoder(r.Body).Decode(target)
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-08 08:57:18

net/http.Request有一个可以直接编辑的Header字段,但这意味着您不能使用快捷的client.Get方法。更像是:

代码语言:javascript
复制
req, err := http.NewRequest(http.MethodGet, url, nil)
if err != nil {
        return err
}
req.Header = map[string][]string{
        "Authorization": {fmt.Sprintf("Bearer %s", jwt)},
}
r, err := myClient.Do(req)
...
票数 1
EN

Stack Overflow用户

发布于 2018-07-08 19:58:45

你可以这样做,

代码语言:javascript
复制
func getJson(url string, target interface{}) error {
req, err := http.NewRequest(http.MethodGet, url, nil)
if nil != err {
    return err
}
r, err := myClient.Do(req)
if err != nil {
    return err
}
defer r.Body.Close()
return json.NewDecoder(r.Body).Decode(target)

}

或者,您也可以使用上下文来控制请求超时

代码语言:javascript
复制
func getJsonWithContext(url string, target interface{}) error {
req, err := http.NewRequest(http.MethodGet, url, nil)
if nil != err {
    return err
}
ctx, cancel := context.WithTimeout(context.Background(), time.Second*1)
defer cancel()
reqWithContext := req.WithContext(ctx)
r, err := myClient.Do(reqWithContext)
if err != nil {
    return err
}
defer r.Body.Close()
return json.NewDecoder(r.Body).Decode(target)

}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51228028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档