作为客户端
我们请求随机的一张狗狗图片
resp, err := http.Get("https://dog.ceo/api/breeds/image/random")
if err != nil {
fmt.Printf("get failed, err:%v\n", err)
} else {
defer resp.Body.Close()
fmt.Printf("typeof resp: %T \n", resp) // typeof resp: *http.Response
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Printf("read from resp.Body failed, err:%v\n", err)
} else {
fmt.Printf("typeof body: %T \n", body) // typeof body: []uint8
fmt.Printf("body %s \n", string(body)) // body {"message":"https:\/\/images.dog.ceo\/breeds\/leonberg\/n02111129_4533.jpg","status":"success"}
}
}
作为服务端
我们可以提供接口
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func handleRandom(w http.ResponseWriter, r *http.Request) {
resp, err := http.Get("https://dog.ceo/api/breeds/image/random")
if err != nil {
fmt.Printf("get failed, err:%v\n", err)
} else {
defer resp.Body.Close() // 注意关闭
fmt.Printf("typeof resp: %T \n", resp) // typeof resp: *http.Response
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Printf("read from resp.Body failed, err:%v\n", err)
} else {
fmt.Printf("typeof body: %T \n", body) // typeof body: []uint8
fmt.Printf("body %s \n", string(body)) // body {"message":"https:\/\/images.dog.ceo\/breeds\/cairn\/n02096177_2006.jpg","status":"success"}
fmt.Fprintln(w, string(body))
}
}
}
func main() {
http.HandleFunc("/random", handleRandom) // 定义路由
err := http.ListenAndServe(":8080", nil) // 监听端口
if err != nil {
fmt.Printf("http server failed, err:%v\n", err)
}
}
这样我们就可以通过浏览器请求这个接口了