[js go]http

117 阅读1分钟

作为客户端

我们请求随机的一张狗狗图片

	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)
	}
}

这样我们就可以通过浏览器请求这个接口了