Go接收Post请求


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

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM