可以使用 Go 语言内置的 net/http
包来调用 API 接口。以下是一个基本的 HTTP GET 请求示例:
package main
import (
"fmt"
"net/http"
"io/ioutil"
)
func main() {
url := "https://jsonplaceholder.typicode.com/posts/1"
resp, err := http.Get(url)
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error:", err)
return
}
fmt.Println(string(body))
}
这个示例中,我们使用 http.Get
方法向指定的 URL 发起 GET 请求。如果请求成功,我们会读取响应体并将其打印到控制台。如果请求失败,则会打印出错误信息。在使用完响应体后,我们需要调用 defer resp.Body.Close()
来确保资源得到正确释放。
你还可以使用 http.NewRequest
方法自定义 HTTP 请求。以下是一个基本的 HTTP POST 请求示例:
package main
import (
"fmt"
"net/http"
"bytes"
)
func main() {
url := "https://jsonplaceholder.typicode.com/posts"
data := []byte(`{"title":"foo","body":"bar","userId":1}`)
req, err := http.NewRequest("POST", url, bytes.NewBuffer(data))
if err != nil {
fmt.Println("Error:", err)
return
}
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error:", err)
return
}
defer resp.Body.Close()
fmt.Println("Status:", resp.Status)
}
在这个示例中,我们使用 http.NewRequest
方法创建一个 HTTP POST 请求。我们可以使用 bytes.NewBuffer
方法生成包含请求体的字节数组,并使用 Header.Set
方法来设置请求头。使用 client.Do(req)
方法可以向指定的 URL 发送这个请求。最后,我们打印出了响应状态码。