如何在Go语言中制作自定义HTTP客户端?

4

我希望创建一个自定义的http客户端,以便尽可能多地重复使用它。

不过,我认为Go语言已经把某些在代码后面发生的进程抽象化了。

我知道,要进行一个GET请求,必须先创建一个客户端。

那么客户端是在哪里创建的?我该如何自定义它或用自己的替换它?

package main

import (
    "fmt"
    "github.com/njasm/gosoundcloud"
)

 s, err = gosoundcloud.NewSoundcloudApi("Client_Id", "Client_Secret", nil)


func main() {
    if err = s.PasswordCredentialsToken("email@example.com", "password"); err != nil {
    fmt.Println(err)
    os.Exit(1)
}
    member, err := s.GetUser(uint64(1))
    if err != nil {
               panic(err)
     }
    fmt.Println(member.Followers)
}

以下是SoundCloud包装器的参考文献:
func NewSoundcloudApi(c string, cs string, callback *string) (*SoundcloudApi, error)

func (s *SoundcloudApi) PasswordCredentialsToken(u string, p string) error

func (s *SoundcloudApi) GetUser(id uint64) (*User, error)
1个回答

3
使用Golang,您可以轻松创建客户端并使用它进行请求:
client := &http.Client{
    CheckRedirect: redirectPolicyFunc,
}

resp, err := client.Get("http://example.com")

查看http文档

但是在您使用的gosoundcloud包中,当调用以下语句时会创建http.Client:

s.PasswordCredentialsToken("email@example.com", "password");

创建的客户端被嵌入到“SoundcloudApi”结构体中(即代码中的“s”),是一个私有字段,因此无法访问它。不过,每当您要求“s”执行某些操作(例如调用s.User时),似乎都会使用它,所以它似乎可以实现您所要求的功能。

你为什么说这是一个私有字段? - Juanvulcano
因为它是语言的一部分:[https://tour.golang.org/basics/3]。以大写字母开头的名称是公开的(exported/public),如果不是,则不公开(private)。 - jnmoal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接