目录
- get方式访问外部的接口
- Post方式请求外部接口
不同项目之前,通过http访问,进行数据沟通
先设定一个接口,确认外部能访问到
PHP写一个接口
public function ceshi_return() { $data = $this->request->param(); $id = $data['id']; $res = Db::name('user')->field('id,status,price,name')->where(['id'=>$id])->find(); $this->ajaxReturn($res); }
返回效果:
get方式访问外部的接口
封装的函数
package utils func GetRequest(url string) string { client := &http.Client{Timeout: 5 * time.Second} resp, err := client.Get(url) if err != nil { panic(err) } defer resp.Body.Close() result, _ := ioutil.ReadAll(resp.Body) return string(result) }
上层访问接口
因为要将请求到的数据,进行处理,所以需要提前定义一个结构体来接受处理这些数据
type GetData struct { Id int `json:"id"` Status int `json:"status"` Price int `json:"price"` Name string `json:"name"` } func GetUserData(c *gin.Context) { id := c.PostForm("id") url := "https://www.xxxx.com/admin/login/ceshi_return?id=" + id data := utils.GetRequest(url) d := []byte(data) var g GetData _ = json.Unmarshal(d, &g) c.JSON(http.StatusOK, gin.H{ "code": 200, "msg": "查询成功", "data": g, }) }
效果
Post方式请求外部接口
封装函数
这里的访问方式,我写死了,设置成了json格式,有其他的方式,可以根据自己需求修改
package utils func PostRequest(url string, data interface{}) string { client := &http.Client{Timeout: 5 * time.Second} jsonStr, _ := json.Marshal(data) resp, err := client.Post(url, "application/json", bytes.NewBuffer(jsonStr)) if err != nil { panic(err) } defer resp.Body.Close() result, _ := ioutil.ReadAll(resp.Body) return string(result) }
访问函数
//采用结构体的方式,来装要发送的数据 type PostData struct { Id int `json:"id"` } // 访问外部地址 func PostUserData(c *gin.Context) { id := c.PostForm("id") var p PostData p.Id, _ = strconv.Atoi(id) url := "https://www.xxxx.com/admin/login/ceshi_return" data := utils.PostRequest(url, p) fmt.Print(data) d := []byte(data) var g GetData _ = json.Unmarshal(d, &g) c.JSON(http.StatusOK, gin.H{ "code": 200, "msg": "查询成功", "data": g, }) }
效果
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)