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