golang通过http访问外部网址

不同项目之前,通过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=" + iddata := 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 PostDatap.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,})}

效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/491135.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSTL标签

JSTL标签 一、什么是JSTL标签: 随着J2EE瘦客户机技术JavaServer Pages(JSP)在过去几年中的流行,开发人员已经创建了许多自定义的JSP标记库。虽然很多标记库是为实现不同目标的而编写的,但它们往往也对迭代、条件及其它通用操作都提供了类似…

dolphinscheduler单机版部署教程

文章目录 前言一、安装准备1. 安装条件2. 安装jdk3. 安装MySQL 二、安装dolphinscheduler1. 下载并解压dolphinscheduler2. 修改配置文件2.1 修改 dolphinscheduler_env.sh 文件2.2 修改 application.yaml 文件 3. 配置mysql数据源3.1 修改MySQL安全策略3.2 查看数据库3.3 创建…

wpf 简单实验 数据更新 列表更新

1.概要 1.1 需求 一个列表提供添加修改删除的功能,添加和修改的内容都来自一个输入框 1.2 要点 DisplayMemberPath"Zhi"列表.ItemsSource datalist;(列表.SelectedItem ! null)(列表.SelectedItem as A).Zhi 内容.Text;datalist.Remove((列表.Selec…

JDK8新特性全解析:Java8变革之旅

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

第10届蓝桥杯Scratch图形化编程 选拔赛初级组编程题1:小猫走城堡

准备工作: 导入育最库中的“Castle 3 小猫从坐标点(-165,-93)出发向城堡走去。随着位置的移动,角色大小逐渐变小,最后在城堡前消失。注意1.角色大小在逐渐变化,运行结束再次点击绿旗,程序应还能再次扶行。2.角色应该是…

C++初阶 | [八] (下) vector 模拟实现

摘要:vector 模拟实现讲解(附代码示例),隐藏的浅拷贝,迭代器失效 在进行 vector 的模拟实现之前,我们先粗略浏览一下 stl_vector.h 文件中的源码来确定模拟实现的大体框架。 这里提供一些粗略浏览源码的技巧…

web项目部署 一篇就搞定

web部署的方式有很多,根据开发方式不同,部署方式也不同。最通用是docker部署,这个想必大家都熟悉。我们今天说另外一种。 部署过程 1、验证Jdk是否安装成功 2、验证Tomcat是否安装成功 3、验证Navicat 是否能连上数据库 4、创建数据库并…

谁是单身狗?——C语言刷题

创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 单身狗1 题述 在一个整型数组中,只有一个数字出现一次,其他数组都是成对出现的,请找出那个只出现一次的数字。 例如: 数组中有:1 2 3 4 5 1 2 3 4&a…

SQL 中如何实现多表关联查询?

阅读本文之前请参阅----MySQL 数据库安装教程详解(linux系统和windows系统) 在SQL中,多表关联查询是通过使用JOIN操作来实现的,它允许你从两个或多个表中根据相关列的值来检索数据。以下是几种常见的JOIN类型: …

设计模式-结构型模式-适配器模式

0 引言 结构型模式(Structural Pattern)关注如何将现有类或对象组织在一起形成更加强大的结构。 1 适配器模式 适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类…

【前端素材】推荐实用的后台管理系统ebazer电商平台模板(附带源码)

一、需求分析 后台管理系统网站是指用于管理和控制网站、应用程序或系统后台运行的管理工具。它通常是网站或应用程序的管理者、管理员或内容编辑人员使用的界面,具有一系列功能来管理用户、内容、数据和系统设置。以下是后台管理系统网站的功能和特点:…

FPS游戏漫谈优化包体传输

在游戏服务器的部署环境中,机房的网络带宽都是有限制的。如果通信传输的数据总量太大,会挤占带宽甚至达到带宽上限,影响正常消息发送。另外,如果包体太大,在弱网环境下的通信质量会变差,更容易发生丢包重传…