package controllers import ( "encoding/json" "fmt" "github.com/astaxie/beego" "io/ioutil" "net/http" "sync" ) type ApiController struct { beego.Controller } type Request struct { Key string `json:"key"` Url string `json:"url"` } func (c *ApiController) Post() { var req Request data := c.Ctx.Input.RequestBody //在RequestBody中读取Json fmt.Println(data) _ = json.Unmarshal(data, &req) fmt.Println(req.Key) c.ServeJSON() return } func (c *ApiController) Run() { urls := make(map[string]string) urls["13800138008"] = "https://suggest.taobao.com/sug?q=电脑&code=utf-8" urls["13800138001"] = "https://suggest.taobao.com/sug?q=VR&code=utf-8" urls["13800138002"] = "https://suggest.taobao.com/sug?q=手机&code=utf-8" urls["13800138004"] = "https://suggest.taobao.com/sug?q=苹果&code=utf-8" urls["13800138005"] = "https://suggest.taobao.com/sug?q=冰箱&code=utf-8" var result = requestApi(urls) fmt.Println(result) c.Data["json"] = result c.ServeJSON() return } func requestApi(urls map[string]string) (map[string]string) { apiData := make(map[string]string) var wg sync.WaitGroup wg.Add(len(urls)) for key := range urls { fmt.Println(key, "首都是", urls [key]) var url = urls [key] // 开启协程, 注意参数传递 go func(key string, url string) { res := httpGet(url) beego.Info(key) apiData[key] = string(res) wg.Done() }(key, url) } wg.Wait() // fmt.Println(reflect.TypeOf(apiData)) // 打印类型 map[string]string return apiData } func httpGet(url string) string{ resp, _ := http.Get(url) defer resp.Body.Close() body, _ := ioutil.ReadAll(resp.Body) return string(body) }