Beego接收Json, 并发请求, 返回Json

Posted km2mvp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Beego接收Json, 并发请求, 返回Json相关的知识,希望对你有一定的参考价值。

Beego接收Json, 并发请求Api, 返回Json

package controllers

import (
	"encoding/json"
	"fmt"
	"github.com/astaxie/beego"
	"io/ioutil"
	"net/http"
	"sync"
)

type ApiController struct {
	beego.Controller
}

func (c *ApiController) Post()  {
	req := make(map[string]string)
	data := c.Ctx.Input.RequestBody //在RequestBody中读取Json
	err := json.Unmarshal(data, &req)
	if err != nil {
		fmt.Println(err)
	}
	//for k, v := range req {
	//	fmt.Println(k, v)
	//}
	result := requestApi(req)
	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)
}


// 测试用
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
}

  

以上是关于Beego接收Json, 并发请求, 返回Json的主要内容,如果未能解决你的问题,请参考以下文章

求一个c#的 post请求 json 并且接收返回json数据的一个demo。

Java发送POST请求,参数为JSON格式,并接收返回JSON数据

Java后端发出post请求带参数并接收返回的json

golang简单实现jwt验证(beegoxormjwt)

spring mvc接收参数方式,json格式返回请求数据

json_encode返回的数据怎么接收