当前位置: 首页 > news >正文

调用第三方API --------------Python篇

在项目开发过程中,可能需要调用第三方的一些API或者公司提供的数据接口来得到相应的数据或者实现对应的功能。
因此API的调用和数据接口的访问都是做数据分析的一个常用操作,如何快速实现API和数据接口的调用,网上一般提供很多语言版本,但追根溯源采取的方式都是利用HTTP请求的方式来进行实现的。

API
API:简单来说就是一组协议、一个工具或者一组规则,定义不同应用程序之间的通信方法,把具体实现的过程隐藏起来,只暴露必须调用的部分给开发者使用。

举一个简单的例子,一个社交平台它每天收到各种语言的评论信息,而作为对应的分析人员面对复杂的语言数据处理,是一个大难题,有人可能说开发一个模型来实现翻译整合功能,这个方法虽然听起来可行但是成本代价高,其次为了解决一个问题,而又去开发一个比较困难的问题。这个与原本的目标偏离越来越远,这个时候就可以借助国内比较成熟的翻译平台API,直接处理现有的数据。这样相对而言成本代价小,更便捷也更能快速实现现有的目标。而API的作用在这里就毋庸置疑了。

数据接口
数据接口: 简单来说就是一组封装的数据集口令,就是按照对应的规则发送相应的参数,然后返回对应的相关数据信息。API的调用和数据接口的这两个在日常调用时很类似的,相对而言API的范围更宽广,实现的功能也比较多,而数据接口日常充当的就是一个取数工具比较多。

就比如说大型电商公司公司一般用统一的SKU来对商品进行管理,而比如这家公司是作为一个品牌商,它会在不同平台上面进行售卖,而在这些平台上面映射的商品标识ID就不同于公司的SKU。因为公司的SKU不仅基于商品而且还考虑各个地方仓库以及产品的各个型号,而这个映射相对而言就比较复杂。
而在处理不同平台的数据人员一般也不能直接使用公司的数据库来对商品进行分析,因为颗粒度太细,分析起来比较复杂困难,这个时候就可以根据对应功能的要求让开发在现有系统是开发一个单独的数据接口提供相应的公司,避免直接请求数据库过程复杂等相应信息。但数据接口相对实时的数据库存在一定的延迟。

API的调用和数据接口的调用
API和数据接口通过前面的举例论述,大致理解起来也比较简单,而具体怎么实现API的调用和数据接口的调用这里简单介绍一下。
简单来说API的调用和接口的调用都是类似一个HTTP请求,而调用最主要就是根据相应的规则将请求方式、请求头、URL、以及请求体封装好然后发送请求,就可以实现相应的调用。

但数据接口和API两个的调用相比较而言来,一般数据接口比较简单,很多情况下数据接口是在公司内网数据访问所以请求信息比较简单,而API大多是第三方企业开发对外的服务属于一种商业服务,相对而言为了保证请求的安全,考虑的更为全面,加入了AK、SK、签名、时间戳等信息比较复杂。
而追本溯源这两个调用都是类似HTTP请求,具体调用大致差不多,主要就是API调用中包含的请求参数的信息更多。而具体怎么实现下面将简单的介绍一下。

调用的基础-请求方法
一般而言,常见的HTTP请求调用方式有很多,这方面的资源比较多,可以网上自己查阅,这里就简单说说常见的两种请求方法。

GET 请求
GET请求简单来说就是从服务器上获取资源,可以载入到浏览器的缓存中。

POST 请求
POST请求一般而言以表单形式向服务器发送请求,请求参数包含在请求体当中可能导致资源的创建和改变。POST请求的信息不能缓存在浏览器中。
这两个请求方法说起来很简单,但最重要的一点就是了解这两种请求的区别,从而为接口的设计和API的使用更加熟悉。

GET和POST请求的区别
1.GET请求请求长度最多1024kb,POST对请求数据没有限制。这一点原因是很多时候GET请求把对应的信息放在URL中,而URL的长度有限,导致GET请求的长度也受到一定的限制。而POST请求相应的参数信息放在请求体body中所以一般不受长度限制。
2.POST请求比GET更安全一些,因为GET请求中URL包含了相应的信息,页面会被浏览器缓存,其他人可以看到相应的信息。
3.GET产生一个TCP数据包,POST产生两个TCP数据包。
GET请求的时候将header、data一起发送出去,然后服务器响应返回200。而POST则是先发送header,等待服务器响应100,然后发送data,最后服务器响应返回200.但在这里注意,POST请求分为两次,但是请求体body是紧随在header之后发送的,所以这之间时间可以微乎不计。
4.GET请求只支持URL编码,而POST相对而言有多种编码方式。
5.GET请求参数是通过URL传递的,多个参数以&连接,POST请求放在request body中。
6.GET请求只支持ASCII字符,而POST没有限制。
一般而言浏览器输入网址可以直接访问的一般是GET请求。

Python实现GET请求和POST请求
上面大篇幅的介绍了一些数据接口、API相关知识以及请求方法,使用起来比较简单,下面可以大致熟悉一下相应的请求方式。一般直接使用Python的request库就可以。

一.调用GET请求外部接口

import json
import requestsdef request_get(url, param):fails = 0while True:try:if fails >= 20:breakret = requests.get(url=url, params=param, timeout=10)if ret.status_code == 200:text = json.loads(ret.text)else:continueexcept:fails += 1print('网络连接出现问题, 正在尝试再次请求: ', fails)else:breakreturn text


 调用示例:

post_url = "http://localhost:8095/test/get"
request_param = {"name": "小红", "content": "Hello World!"}
a = request_get(post_url, request_param)
print(a)


二.调用POST请求外部接口

import json
import requestsdef request_post(url, param):fails = 0while True:try:if fails >= 20:breakheaders = {'content-type': 'application/json'}ret = requests.post(url, json=param, headers=headers, timeout=10)if ret.status_code == 200:text = json.loads(ret.text)else:continueexcept:fails += 1print('网络连接出现问题, 正在尝试再次请求: ', fails)else:breakreturn text

调用示例:

post_url = "http://localhost:8096/test/post"
request_param = {"id": "abcde", "name": "测试"}
a = request_post(post_url, request_param)
print(a)

                   感谢大家的阅读,觉得有所帮助的朋友点点关注点点赞! 

相关文章:

调用第三方API --------------Python篇

在项目开发过程中,可能需要调用第三方的一些API或者公司提供的数据接口来得到相应的数据或者实现对应的功能。 因此API的调用和数据接口的访问都是做数据分析的一个常用操作,如何快速实现API和数据接口的调用,网上一般提供很多语言版本&#…...

Web自动化测试-掌握selenium工具用法,使用WebDriver测试Chrome/FireFox网页(Java

目录 一、在Eclipse中构建Maven项目 1.全局配置Maven 2.配置JDK路径 3.创建Maven项目 4.引入selenium-java依赖 二、Chrome自动化脚本编写 1.创建一个ChromeTest类 2.测试ChromeDriver 3.下载chromedriver驱动 4.在脚本中通过System.setProperty方法指定chromedriver的…...

maven多模块项目搭建

文章目录 创建方式创建父项目创建子模块 目录结构示例父模块模块A模块B(并在模块B中引入模块A) 注意事项 创建方式 创建父项目 #创建文件夹后,进入目录,执行以下命令 PS D:\demo> mvn archetype:generate #将输出很多模板&am…...

PostgreSQL的视图pg_tables

PostgreSQL的视图pg_tables pg_tables 是 PostgreSQL 中的一个系统视图,用于显示当前数据库中所有用户定义的表的信息。这个视图提供了关于表的名称、所属模式(schema)、所有者以及表类型等详细信息。 pg_tables 视图的主要列 列名类型描述…...

Stable diffusion采样器详解

在我们使用SD web UI的过程中,有很多采样器可以选择,那么什么是采样器?它们是如何工作的?它们之间有什么区别?你应该使用哪一个?这篇文章将会给你想要的答案。 什么是采样? Stable Diffusion模…...

为什么要进行渗透测试?

渗透测试的重要性 渗透测试是一种安全评估技术,旨在模拟黑客攻击,发现和利用系统漏洞,以评估企业信息系统的安全性。以下是进行渗透测试的几个主要原因: 1.发现潜在的漏洞和安全风险:渗透测试可以模拟真实的攻击行为…...

后方碰撞预警系统技术规范(简化版)

后方碰撞预警系统技术规范(简化版) 1 系统概述2 预警区域3 预警目标4 功能需求功能条件5 显示需求6 指标需求1 系统概述 后方碰撞预警系统RCW(Rear Collision Warning)是在后方车辆即将与自车发生碰撞之前,激活危险警告灯以较高频率闪烁,从而吸引后方驾驶员的注意力,避免…...

Position定位

Position定位 CSS中position属性是比较常用的元素定位方案,position常用的取值有static、relative、absolute、fixed、sticky、inherit。 static static属性是HTML元素的默认值,即没有定位,遵循正常的文档流对象,对于top、bott…...

npm install 的原理

1. 执行命令发生了什么 ? 执行命令后,会将安装相关的依赖,依赖会存放在根目录的node_modules下,默认采用扁平化的方式安装,排序规则为:bin文件夹为第一个,然后是开头系列的文件夹,后…...

基于I2C协议的OLED显示(利用U82G库)

目录 一、I2C协议 1、了解I2C协议的基本原理和时序协议 基本原理 时序协议 2、掌握0.96寸OLED屏的工作原理,汉字点阵显示原理 OLED 工作原理 汉字点阵显示原理 3、掌握开源GUI库U82G在stm32上的移植编译方法,以及图形界面可视化技术。 二、具体…...

【文末附gpt升级秘笈】探索AGI之路:穿越大模型的冰与火,谱写未来技术的乐章

探索AGI之路:穿越大模型的冰与火,谱写未来技术的乐章 摘要 随着人工智能技术的飞速发展,大模型成为了业界关注的焦点。然而,大模型并非万能,其背后隐藏着诸多迷思与挑战。本文基于“AGI技术50人”访谈栏目的素材&…...

国内12寸先进封装厂家的一些情况

一、12寸先进封装厂家 在中国大陆,专注于12英寸(300mm)晶圆的先进封装技术的企业包括但不限于以下几家: 1. 长电科技(JCET Technologies Co., Ltd.):长电科技是中国领先的半导体封装测试企业之…...

【代码随想录训练营】【Day 48】【动态规划-7】| 卡码 57, Leetcode 322, 279

【代码随想录训练营】【Day 48】【动态规划-7】| 卡码 57, Leetcode 322, 279 需强化知识点 python 的幂次计算, 10 ** 5, 10 **(0.5) 题目 卡码 57. 爬楼梯(第八期模拟笔试) 注…...

【Qt】Qt常见的数据类型

思维导图 学习目标 一、基础类型 因为Qt是一个C的框架,因此C的语法和数据类型在Qt中都是被支持的,但是Qt中也是定义了一些属于自己的数据类型,不过,好多数据类型都是对C的数据类型进行封装,下面来简要介绍一下这些基…...

【源码】Spring Data JPA原理解析之事务执行原理

Spring Data JPA系列 1、SpringBoot集成JPA及基本使用 2、Spring Data JPA Criteria查询、部分字段查询 3、Spring Data JPA数据批量插入、批量更新真的用对了吗 4、Spring Data JPA的一对一、LazyInitializationException异常、一对多、多对多操作 5、Spring Data JPA自定…...

第十一篇——信息增量:信息压缩中的保守主义原则

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 通过信息中的保守主义,我想到了现实中人的保守主义一样&#…...

中国飞行器设计创新大赛多旋翼无人机任务飞行

源码&#xff1a;后续补充 1、启动launch文件 roslaunch robot_bringup mission.launch <launch> <!--启动mavros节点 --><include file"$(find mavros)/launch/px4.launch" /><!--启动USB摄像头节点 --><include file"$(find…...

WPF-UI布局

WPF布局元素有如下几个&#xff1a; Grid&#xff1a;网格。可以自定义行和列并通过行列的数量、行高和列宽来调整控件的布局。StackPanel&#xff1a;栈式面板。可将包含的元素在竖直或水平方向上排成一条直线&#xff0c;当移除一个元素后&#xff0c;后面的元素会自动向前移…...

武忠祥17堂课没必要全听,这几个才是精华!

作者&#xff1a;Captain 链接&#xff1a;https://www.zhihu.com/question/381665751/answer/3197724055 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 17堂课类似于习题课&#xff0c;是专题训练 17堂课省略了…...

Android 蓝牙profile的配置

在做BQB认证之前&#xff0c;我们需要确认那些profile之前&#xff0c;我们需要查看profile的配置情况 Android13版本前蓝牙profile的配置 MTK的项目代码如下 vendor\mediatek\proprietary\packages\modules\Bluetooth\android\app\res\values\config.xml 高通的项目代码如…...

Selenium时间等待_显示等待

特点&#xff1a; 针对具体元素进行时间等待 可以自定义等待时长和间隔时间 按照设定的时间&#xff0c;不断定位元素&#xff0c;定位到了直接执行下一步操作 如在设定时间内没定位到元素&#xff0c;则报错&#xff08;TimeOutException&#xff09; 显示等待概念&#x…...

41 mysql subquery 的实现

前言 sub query 是一个我们经常会使用到的一个 用法 我们这里 看一看各个场景下面的 sub query 的相关处理 查看 本文, 需要 先看一下 join 的相关处理 测试数据表如下, 两张测试表, tz_test, tz_test03, 表结构 一致 CREATE TABLE tz_test (id int(11) unsigned NOT NUL…...

钉钉二次开发-企业内部系统集成官方OA审批流程(三)

书接上回&#xff0c;本文主要分享 企业内部系统集成钉钉官方OA审批流程的步骤 的第二部分。 前端代码集成钉钉免登JSAPI: 前端通过corpid 获得钉钉临时访问码code&#xff0c;再通过临时访问码code调用此接口返回当前用户的姓名、userid、 钉钉用户id、 系统工号、 钉钉部门…...

代码随想录算法训练营第五十四 | ● 392.判断子序列 ● 115.不同的子序列

392.判断子序列 https://programmercarl.com/0392.%E5%88%A4%E6%96%AD%E5%AD%90%E5%BA%8F%E5%88%97.html class Solution { public:bool isSubsequence(string s, string t) {if(s.size()0 )return true;if(t.size()0)return false;vector<vector<int>> dp(s.size(…...

C++设计模式-外观模式,游戏引擎管理多个子系统,反汇编

运行在VS2022&#xff0c;x86&#xff0c;Debug下。 30. 外观模式 为子系统定义一组统一的接口&#xff0c;这个高级接口会让子系统更容易被使用。应用&#xff1a;如在游戏开发中&#xff0c;游戏引擎包含多个子系统&#xff0c;如物理、渲染、粒子、UI、音频等。可以使用外观…...

嵌入式软件测试相关分析

嵌入式软件测试相关分析 1. 引言 在软件发展之初&#xff0c;上个世纪五六十年代&#xff0c;软件被视为数学领域&#xff0c;编程是为了进行数学计算&#xff0c;由数学公式推导&#xff0c;来写函数。因此&#xff0c;在那个时候所编写的程序是被视为数学问题&#xff0c;数…...

vue+jave实现文件报表增加文件下载功能

需求背景:系统有文件交互功能。但没有做页面展示。为了测试方便&#xff0c;写了报表展示并可下载文件做检查。(所以下载是依赖表数据的) 使用语言和框架: 前端:vue-cli 后端:springBoot 前端实现 1、在报表vue文件&#xff0c;显示下载按钮并实现下载接口请求和处理。 //报…...

网站安全性评估方法

评估一个网站的安全性是一个多方面的过程&#xff0c;涉及到对网站的技术架构、代码质量、数据处理、用户交互等多个维度的考察。以下是一些常用的评估方法&#xff1a; 1.了解常见的安全风险&#xff1a;包括恶意软件、钓鱼攻击、跨站脚本攻击等&#xff0c;这些都是网站可能…...

【小程序】WXML模板语法

目录 数据绑定 数据绑定的基本原则 在data中定义页面的数据 Mustache语法的格式 Mustache语法的应用场景 事件绑定 什么是事件 小程序中常用的事件 事件对象的属性列表 target和currentTarget的区别 bindtap的语法格式 在事件处理函数中为data中的数据赋值 事件…...

[数据集][目标检测]厨房积水检测数据集VOC+YOLO格式88张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;88 标注数量(xml文件个数)&#xff1a;88 标注数量(txt文件个数)&#xff1a;88 标注类别数…...

门户网站 页面集成/申请百度收录网址

什么是统计学&#xff1f;统计学是研究数据的收集、整理、分析、解释和表达的一门科学。Statistics is the science dealing with the collections, analysis, interpretation and presentation of masses of numerical data. (Webster国际大词典)统计学简史图1 统计学简史数理…...

网站上动画视频怎么做的/北京百度seo点击器

本文内容 引入IHttpModule 概述创建自定义 HTTP 模块的步骤演示创建自定义 HTTP 模块 HTTP 模块的工作方式 HTTP 模块与 Global.asax 文件参考资料引入 本文在 VS 2008 和 IIS 6 环境下概述如何利用 IHttpModule 自定义 HTTP 模块。 当我们在 VS 2008 里新建一个 Web 应…...

免费学做淘宝的网站/网络平台运营是做什么的

java中public与private还有protect的区别 总是忘记。...

做软件界面的网站/怎样做好网络推广呀

虚拟环境为什么需要虚拟环境&#xff1a;到目前位置&#xff0c;我们所有的第三方包安装都是直接通过pip install xx的方式进行安装的&#xff0c;这样安装会将那个包安装到你的系统级的Python环境中。但是这样有一个问题&#xff0c;就是如果你现在用Django 1.10.x写了个网站&…...

白云网站建设多少钱/网络上哪里可以做推广

https://www.cnblogs.com/zhangzhifeng/category/835602.html 这是个困惑我很长时间的问题&#xff0c;到今天终于得到解决了。 话说Delphi有个很强的窗体设计器&#xff0c;这一点让VC粉丝垂涎三尺而不可得。但是&#xff0c;Delphi里设计的窗体并没有自动适应屏幕分辨率的属性…...

wordpress做小程序/搜索引擎关键词排名优化

NEW关注Tech逆向思维视频号最新视频→【最骇人的5起自动驾驶“杀人”事故】出品&#xff5c;脑极体文&#xff5c;燕良最影响人类生命质量的疾病排在首位的就是癌症了。古人谈虎色变&#xff0c;今人谈癌色变。癌症这类疾病早已经不是年老体弱的人专属&#xff0c;而是越来越趋…...