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://xiahunao.cn/news/2799350.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

eclipse做NC开发选择nchome后,测试连不通

在bin文件下的config.bat里却又能够连通数据库,在eclipse却不行。 可能是jdk选择的问题,把jdk改成home自带的jdk

【关于深度学习的一些资料】

曾梦想执剑走天涯,我是程序猿【AK】 目录 动手学深度学习Awesome Deep LearningTensorFlow Official ModelsPyTorch Image ModelsDeep Reinforcement LearningNeural Style Transfer 动手学深度学习 动手学深度学习 https://zh.d2l.ai/chapter_installation/index.…

嵌入式学习-qt-Day2

嵌入式学习-qt-Day2 一、思维导图 二、作业 1.使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 2.将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账…

小程序--引入vant组件库

一、npm初始化 在微信开发者工具中打开终端,输入npm init,对npm进行初始化 二、安装vant组件库 npm install vant/weapp 三、修改app.json 修改 app.json,移除全局配置 "style": "v2",否则 Vant 组件的样式…

记一次 .NET某列控连锁系统 崩溃分析

一:背景 1. 讲故事 过年喝了不少酒,脑子不灵光了,停了将近一个月没写博客,今天就当新年开工写一篇吧。 去年年初有位朋友找到我,说他们的系统会偶发性崩溃,在网上也发了不少帖子求助,没找到自…

Android 浅色皮肤阴影开发

前言:项目中要进行浅色皮肤开发,然后要求要有阴影效果,下面是UI觉得可行的中立方案效果 尝试一、使用elevation添加阴影发现效果一般 尝试二、使用带阴影的UI切图后续发现成本太大,对后续多个皮肤适配要求太大 尝试三、使用elevat…

Adobe将类ChatGPT集成到PDF中

2月21日,全球多媒体巨头Adobe在官网宣布,推出生成式AI助手AI Assistant,并将其集成在Reader 和Acrobat 两款PDF阅读器中。 据悉,AI Assistant的功能与ChatGPT相似,可以基于PDF文档提供摘要、核心见解、基于文档内容&a…

CSS 函数详解url、min、rgb、blur、scale、rotate、translate等

随着技术的不断进步,CSS 已经从简单的样式表发展成为拥有众多内置函数的强大工具。这些函数不仅增强了开发者的设计能力,还使得样式应用更加动态、灵活和响应式。本文将深入探讨 CSS 常见的 66 个函数,逐一剖析它们的功能和用法,一…

乡镇街道档案包括哪些内容

乡镇街道档案是指记录乡镇街道行政区域内的各种信息、数据和文献资料的档案。乡镇街道档案通常包括以下内容: 1. 行政管理档案:包括乡镇街道的组织机构、人员编制、管理制度等方面的档案资料。 2. 经济发展档案:记录乡镇街道的经济发展情况&a…

一个简单的mysql绕过

一、环境代码 上一个环境的demo文件 二、ctf技巧 代码先进入,到chr转换为英文,之后连接到hehe后面,假设我连接了一个,接下来就回去demo中查找hehe,如果name是hehe就输出,意思就是只认前面的hehe后面的会被…

Nginx----高性能的WEB服务端

一、Nginx介绍 1、什么是Nginx Nginx Nginx是一个高性能的HTTP和反向代理服务器。是一款轻量级的高性能的web服务器/反向代理服务器/电子邮件(IMAP/POP3)代理服务器,单台物理服务器可支持30 000~50 000个并发请求。 一款高性能…

B/S架构,java源码,医院绩效管理系统,覆盖了医院绩效管理工作“PDCA”循环的全过程,支持二次开发

医院绩效管理系统源码 医院绩效管理系统以国家医院绩效管理考核政策法规为依据,结合医院管理实践,以经济管理指标为核心,医疗质量、安全、效率、效益管理为重点,特别强调持续改进(PDCA)管理理念。实现医院绩…

【关于python变量类型学习笔记】

python的变量类型 在创建变量时会在内存中开辟一个空间,变量是存储在内存中的值。 根据变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 变量可以指定不同的数据类型,这些变量可以存储整数,…

怎么制作图文笔记 电脑图文笔记制作方法

在知识的海洋中遨游时,我时常感到需要一个得力的助手来帮我捕捉那些闪过的灵感和重要的信息。试过各种笔记方法后,我发现了笔记软件的魅力:它们不仅便捷,还能让笔记更加丰富多彩。 想象一下,你正在阅读一篇关于历史文…

js设计模式:建造者模式

作用: 将众多功能独立封装,然后用一个大类将其全部收纳,形成一个完整的功能 这个是很常见的设计模式 示例: function render(h){}function h(){}function $mount(dom){console.log(dom,绑定的根节点)console.log(this,this是vue实例)}function use(plugin){}function $attr(…

SQL-FEFT JOIN (拼接表)

语法 SELECT column_name(s) FROM table1 LEFT JOIN table2 ON table1.column_nametable2.column_name; 按照一定规则,将表table1和表table2拼接起来。 例: Employees 表: ------------------------ | Column Name | Type | ------…

合纵连横 – 以 Flink 和 Amazon MSK 构建 Amazon DocumentDB 之间的实时数据同步

在大数据时代,实时数据同步已经有很多地方应用,包括从在线数据库构建实时数据仓库,跨区域数据复制。行业落地场景众多,例如,电商 GMV 数据实时统计,用户行为分析,广告投放效果实时追踪&#xff…

qt-有趣的小球游戏大球吃小球

qt-有趣的小球游戏大球吃小球 一、演示效果二、核心程序三、下载链接 一、演示效果 二、核心程序 #include "mainwindow.h" #include "ui_mainwindow.h" #include "organism.h" #include "badorganism.h" #include <QPainter> …

C++ Primer 笔记(总结,摘要,概括)——第4章 表达式

目录 4.1 基础 4.1.1 基本概念 4.1.2 优先级与结合律 4.1.3 求值顺序 4.2 算术运算符 4.3 逻辑和关系运算符 4.4 赋值运算符 4.5 递增和递减运算符 4.6 成员访问运算符 4.7 条件运算符 4.8 位运算符 4.9 sizeof运算符 4.10 逗号运算符 4.11 类型转换 4.11.1 算数转换…

宝塔面板-安装与卸载

宝塔面板&#xff08;BT Panel&#xff09;是一款在互联网上广泛使用的服务器管理软件&#xff0c;它以其简洁的界面和强大的功能受到了许多站长的喜爱。通过宝塔面板&#xff0c;用户可以轻松地管理服务器上的网站、数据库、FTP、邮箱等服务。本文将详细介绍宝塔面板的安装与卸…