需要知道的一些API接口的基础知识
API是应用程序编程接口(Application Programming Interface)的缩写,能够起到两个软件组件之间的连接器或中介的作用。此类接口往往通过一组明确的协议,来表示各种原始的请求和响应。API文档可以向开发人员展示请求和响应是如何形成的。简单而言,API能够允许两个应用程序彼此之间实现通信。无论我们在手机上查看天气,还是使用微信,或者在Facebook等应用上收发消息,都会频繁地使用到API。
有关API的数据
自2007年以来,API的使用量已增加了13倍
得益于API,Google、Facebook和Twitter等知名应用,每天都会被调用约50-100亿次
Netflix持续使用API向200台设备传输数据流
API的调用流程
当我们在使用应用程序的某项功能时,通常会在后台发生如下情况:
数据请求被发送到服务器上
服务器对其进行解析,并理解其请求的含义
服务器提供必要的响应
响应被成功地发送回设备
其实,每次在我们要求应用程序提供某些特定的服务响应时,这样的过程都会重复循环一次。
不同的API协议和架构
REST:在众多的API架构类型中,表述性状态转移(Representational State Transfer)往往被广为采用。REST API的工作原理是以客户机与服务器的方式,将API的前端与后端区分开来。而且它不会存储任何数据或状态。
SOAP:简单对象访问协议(Simple Object Access Protocol)也被广泛用于通过XML创建Web API的场景中。它能够兼容诸如:HTTP、TCP和SMTP等互联网常见的通信协议。由于SOAP易于被扩展,因此开发者能够很容易地用它来编写和添加新的功能。与其他架构相比,SOAP具有高度结构化、严格可控性、以及具有被明确定义的标准等特性。
RPC:远程过程调用(remote procedural call)能够被用来调用各种可执行的操作。它非常适合于发送各种参数,以及接收各种相应的响应。
API的类型
根据访问级别和使用范围的不同,API往往可以被分为如下不同的类型。开发人员可以根据自己的要求,进行适当地选择。
A、伙伴API
在此类API中,对于数据的访问,仅限于那些拥有官方许可证的授权客户端。也就是说,只有那些与提供API的公司有业务关系的调用方,才能使用此类API。开发方对于谁可以访问这些资源,有着较大的控制权。
伙伴API的优势:
业务方可以把更多的注意力放在公司的核心与发展上,而无需迁就开发人员。如果一个开发人员觉得某个问题难以被解决,则可以由另一个开发人员去轻松地搞定。这便是伙伴合作给项目带来的好处。
保留伙伴API政策将有助于集成大量电商软件的不同解决方案,并使得软件能够在瞬息万变的行业中保持最新和强相关。
B、公共API
顾名思义,公共API可供任何外部开发人员或企业使用。对于那些与公众和其他业务组织共享应用和数据的业务结构来说,Public API是理想的选择。
公共API的优势:
公共API不但容易实现,而且能够保证用户只要有互联网连接,就能随时随地使用应用服务。
C、内部API
内部或私有API往往只能让企业在其业务内部连接和访问数据。由于内部API的安全性和身份验证能力相对较弱,因此容易导致数据受到安全威胁。对此,开发者需要逐渐改变它们在安全上的各种部署与安排。
内部API的优势:
由于内部API能够将业务的不同部分连接起来,以提高开发过程中的适应性和灵活性,因此此类API可以让开发人员在较短的时间内,制定和构建新的关联应用。
D、复合API
复合API通常是两到多种API的混合体。由于集成了各类API的长处,因此它往往能够带来更高的速度、更大的灵活性、以及更好的性能。
复合API的优势:
复合API能够在单个调出(callout)中执行多项操作。而且其所需的数据位于调用序列的末端,而无需解析各种响应。因此,它比其他API更受欢迎。
电商API接口:企业级数据 电商API接口
API的工作原理
每个API都是由函数的调用来实现的。而函数调用的任务主要是请求软件去执行某些特定的操作和函数。当用户启动API的调用时,它会通知应用程序去启用API与Web服务器通信,并执行相应的任务。具体而言,每当用户指示软件去执行某些任务、或请求某种信息时,API会以应用程序和Web服务器之间的“桥梁”身份去实现。正如前文所说,我们在日常生活中使用到的,诸如:Facebook登录、PayPal支付、以及Google天气查询等,都是API的典型示例。您可以通过链接-- https://nordicapis.com/5-examples-of-apis-we-use-in-our-everyday-lives/,了解其更多的应用场景。
API开发的工具
既然API的任务是简化和加速软件的开发,那么正所谓“工欲善其事,必先利其器”,让我们来看看三种常见的API开发工具:
Sandbox:作为一种简单的模拟RESTful API,它主要能够降低测试过程中第三方API调用的成本。
Apigee:作为构建应用连接的理想工具,由Google推出的Apigee可以促进应用程序和服务之间的数据传输。
APIMatic:对于网站的各种API而言,APIMatic以平台的形式,方便开发人员更加灵活地维护API的各种更新。同时,它也允许开发人员将API描述并转换成诸如:WADL、Swagger、RAML、OAI格式、IO文档、API蓝图、har1.4、以及Postman集合等多种形式。
API的构建实践
API的构建实践,主要体现在如下五个方面:
安全性:使用基于令牌的身份验证,是构建安全可靠的API的良好实践。它既保证了安全性,又兼顾了用户友好性。
文件:精心编撰的API文档不但能够降低项目的开发成本,而且可以提高应用的运行效率和实现时间。应用程序开发人员往往需要通过丰富的API支持文档,来详细地了解整个调用与实现过程。
节流:当涉及到需要重定向流量的溢出、防止DoS(拒绝服务)、以及备份各种API时,我们往往需要通过应用的节流,来有效地实现此类目的。
SDK和代码库:通过向开发团队提供必要的库资源,我们可以加速开发的进程。
重写HTTP方法:由于一些代理只能支持POST和GET方法,因此我们使用定制的HTTP报头X-HTTP-Method-Override,能够允许RESTful API去重写HTTP的方法
相关文章:
需要知道的一些API接口的基础知识
API是应用程序编程接口(Application Programming Interface)的缩写,能够起到两个软件组件之间的连接器或中介的作用。此类接口往往通过一组明确的协议,来表示各种原始的请求和响应。API文档可以向开发人员展示请求和响应是如何形成…...
互融云数字资产管理平台综合解决方案
自十八大以来,发展数字经济逐步成为了国家战略。从2015年国务院印发《促进大数据发展行动纲要》,到2020年4月中央发布《关于构建更加完善的要素市场化配置体制机制的意见》,再到2022年底出台《中共中央、国务院关于构建数据基础制度更好发挥数…...
记住这12个要点,你也能打造出让HR和技术主管前一亮的前端简历
第一篇章:吸引HR 如果你想在众多简历中脱颖而出,需要注意以下几点: 1、突出你的亮点: 给你的简历一个吸引人的文件命名和头部,突出你的关键技能和经验。 2、采用简洁的语言: 用简单易懂的语言来描述你的…...
AQS学习:ReentrantLock源码解析
前言 多线程知识中理解了ReentrantLock之后,对于整个AQS也会有大概的理解,后面再去看其它锁的源码就会比较容易。下面带大家一块来学习ReentrantLock源码。 概述 ReentrantLock是可重入的互斥锁,虽然具有与synchronized相同功能࿰…...
RocketMQ源码分析消息消费机制—-消费端消息负载均衡机制与重新分布
1、消息消费需要解决的问题 首先再次重复啰嗦一下 RocketMQ 消息消费的一些基本元素的关系 主题 —》 消息队列(MessageQueue) 1 对多。 主题 —》 消息生产者,一般主题会由多个生产者组成,生产者组。 主题 —》 消息消费者,一般一个主题…...
华为OD机试真题Python实现【数据分类】真题+解题思路+代码(20222023)
数据分类 题目 对一个数据a进行分类, 分类方法是,此数据a(4 个字节大小)的 4 个字节相加对一个给定值b取模, 如果得到的结果小于一个给定的值c则数据a为有效类型,其类型为取模的值。 如果得到的结果大于或者等于c则数据a为无效类型。 比如一个数据a = 0x01010101,b = 3…...
vue项目中引入字体包
问题: 项目开发过程中,因UI的显示要求,需要引入一些字体,那如何引入外部字体呢?很简单,只需要以下3步 一 下载对应的字体包文件,放置到我们的项目中 比如我需要PingFangSC的系列字体&#…...
Linux 文件相关操作
文件相关操作 编辑文件 命令: vi 文件名 然后输入i进入编辑模式 编辑完成后输入esc退出编辑 输入:wq保存即便目录下没有这个文件,也可以想使用vi 文件名进行编辑,保存退出后会创建这个文件 查看文件内容 命令: cat 文件名复…...
【计算机网络】应用题方法总结
0.前言本篇博客主要记录自己在学习到的部分解决计算机网络应用题方法,主要参考视频如下:计算机网络期末复习 应用题_哔哩哔哩_bilibili【计算机网络】子网划分题型总结_哔哩哔哩_bilibili循环冗余码step 1:确定冗余码长度。多项式最高位即为冗…...
Linux 浅谈之性能分析工具 perf
Linux 浅谈之性能分析工具 perf HELLO,各位博友好,我是阿呆 🙈🙈🙈 这里是 Linux 浅谈系列,收录在操作系统专栏中 😜😜😜 本系列将记录一些阿呆个人整理的 OS 相关知识…...
代码随想录-Day7:四数相加、三数之和
454. 四数相加 II 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 < i, j, k, l < nnums1[i] nums2[j] nums3[k] nums4[l] 0示例 1: 输入࿱…...
jsp在线考试系统Myeclipse开发mysql数据库web结构java编程计算机网页项目
一、源码特点 jsp 在线考试系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5 开发,数据库为Mysql,使用j…...
【总结】2023数学建模美赛!收官!
今年的美赛时间是2.17-2.21,这学期疫情放开了之后管的没那么严了,我们小组就都提前一天到学校了,全力准备17号的比赛。 时间流程 刚拿到6个题的时候,我们三个人一人看两个题,每个人从两个题中再选出来一个自己觉得有…...
C# GDI+ winform绘图知识总结
一、Graphics GDI是GDI(Windows Graphics Device Interface)的后继者,它是.NET Framework为操作图形提供的应用程序编程接口,主要用在窗体上绘制各种图形图像,可以用于绘制各种数据图像、数学仿真等。 Graphics类是G…...
【研究空间复用及函数调用问题】
本篇总结函数调用过程会存在的一些奇怪现象,空间复用问题,其实本质上涉及函数调用的底层原理,理解函数栈帧的创建和销毁这样的问题直接迎刃而解。1.空间复用问题案例1案例22.函数调用过程不清晰问题案例33.总结1.空间复用问题 案例1 我们先…...
SQL常用查询语句
SELECT语句用于查询数据库中的内容 目录 1 查询指定表的所有内容 2 显示所有行的指定列 3 显示指定行的指定列 4 对查询结果进行排序 4.1 按照单一字段排序 4.2 多重排序 5 查询数据总数 5.1 查询一共有多少行 5.2 统计符合条件的有多少行 6 给查询出来的…...
【Python实战】一大波高颜值主播来袭:快看,某网站颜值排名,为了这个排名我可是大费周章啦,第一名不亏是你...(人脸检测+爬虫实战)
导语 民间一直有个传闻......「听说某站的小哥哥小姐姐颜值都很高哦!」 (不是颜值高才能加入,是优秀的人恰好颜值高) 所有文章完整的素材源码都在👇👇 粉丝白嫖源码福利,请移步至CSDN社区或文末…...
Linux进程学习【三】
✨个人主页: Yohifo 🎉所属专栏: Linux学习之旅 🎊每篇一句: 图片来源 🎃操作环境: CentOS 7.6 阿里云远程服务器 Perseverance is not a long race; it is many short races one after another…...
Spring自动装配的底层逻辑
Spring是如何自动装配Bean的?看源码一些自己的理解,如有错漏,请指正 使用Spring之前我们要先去web.xml中设置一下Spring的配置文件,在Spring的配置文件中,是通过component-scan扫描器去扫描base-package底下所有的类装…...
华为OD机试 - 数组合并(C++) | 附带编码思路 【2023】
刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12199283.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 华为OD机试题…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
GAN模式奔溃的探讨论文综述(一)
简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...
