产品经理必备知识——API接口

news2024/11/27 22:36:53

前言

在古代,我们的传输信息的方式有很多,比如写信、飞鸽传书,以及在战争中使用的烽烟,才有了著名的烽火戏诸侯,但这些方式传输信息的效率终究还是无法满足高速发展的社会需要。如今万物互联的时代,我通过一部手机就可以实现衣食住行的方方面面,比如:在家购物、远程控制家电、自动驾驶等等,背后都离不开我们今天要聊的API接口。

一、什么是API及其重要性

API接口是应用程序编程接口(Application Programming Interface)的缩写,是一种预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力。简单来说,API就是让不同的软件之间可以互相通信、协作的工具。

在当今数字化时代,互联网已经成为人们生活和工作中不可或缺的一部分。而API接口则是连接不同应用程序的重要桥梁,它使得不同的应用程序之间可以进行数据交换、信息共享,从而提高工作效率、降低成本,推动数字化转型进程。

比如我们现在看到很多app打开都会弹出请求定位服务的弹窗,本质就是 GPS服务商提供了精准位置的API接口,app通过调用API接口获取设备的经纬度参数。如果你选择允许,app就会根据你的当前位置为你提供更加个性化的一些服务,当然也有一些app拿到你的位置信息做出损害用户利益的行为,所以还是需要谨慎授权。

图片

二、API接口的分类和原理

API接口按类型分类 API接口可以根据其使用方式的不同进行分类,常见的有:

远程过程调用(RPC):通过发送请求和响应消息的方式实现程序间的通信。RPC的设计类似于普通的过程调用,就如同在本地调用API一样。RPC API通常使用二进制压缩格式传递消息,目的就是提高传输效率,但这通常需要在客户端安装指定的库(也就是所谓的存根),这些库与单个API一起工作。

远程函数调用(RFC):类似于RPC,但是更加灵活,允许客户端直接调用服务器上的函数。

消息传递接口(MPI):一种基于消息传递的通信方式,常用于分布式系统中。

通用对象访问协议(CORBA):一种面向对象的通信协议,允许不同操作系统之间的对象之间的相互交互。

API接口的原理介绍 API接口的原理其实就是利用网络协议来实现不同应用程序之间的通信。当一个应用程序需要调用另一个应用程序中的某个功能时,它会向目标应用程序发送一条请求消息,目标应用程序接收到请求后会进行处理并返回相应的响应消息给发起请求的应用程序。这个过程中涉及到了网络协议、数据传输格式、数据加密等多个方面的知识。

图片

三、API接口的请求方式

1. GET方法:GET方法是最常见的一种API请求方式,它的作用是向指定资源发出请求并返回实体主体内容。比如:当我们在浏览器中输入一个URL地址时,浏览器就会发送一个GET请求到服务器上获取相应的网页内容,可以理解为只读。

        ● 使用:用”?”连接,多个参数间用”&”连接(URL末尾;

        ● 应用场景:eg:请求数据:查询,菜单列表,搜索等数据的请求;

        ● 特点:数据量较小,返回速度快,接口暴露在外,存在风险;

    2. POST方法:POST方法是向指定资源提交数据进行处理请求,它通常用于提交表单、上传文件等操作。比如:当我们在网站上填写表单并点击提交按钮时,浏览器就会将表单数据以POST请求的方式发送到服务器上进行处理,可以理解为创建。

        ● 使用:特定地方(提交、上传的地方)提交数据来进行请求;

        ● 应用场景:eg:注册、上传、等功能;

        ● 特点:请求数据量大,安全性要求高;

    3. PUT方法:PUT方法是向指定资源位置上上传其最新内容的操作,它通常用于更新已有的资源信息。比如:当我们在网站上编辑一篇文章并保存时,服务器就会将最新的文章内容以PUT请求的方式覆盖原有的文章信息, 可以理解为修改。

    4. DELETE方法:DELETE方法是请求服务器删除request-URL所标示的资源的操作,它通常用于删除指定的页面或者资源。比如:当我们在浏览器中打开一个错误的页面时,我们可以点击浏览器上的“刷新”按钮或者按下“Delete”键来请求服务器删除该页面。

    5. OPTIONS方法:OPTIONS方法是HTTP协议中的一个预检请求方法,它用于获取目标资源的通信选项等信息。比如:当我们在浏览器中打开一个跨域资源共享(CORS)的网页时,浏览器会先发送一个OPTIONS请求到服务器上获取该资源的允许跨域访问的信息。

    6. HEAD方法:HEAD方法是HTTP协议中的一个非响应性请求方法,它用于获取目标资源的头部信息,不会返回实际的数据内容。比如:当我们在浏览器中查看一个网页的源代码时,我们可以使用浏览器上的“查看页面源代码”功能来发送一个HEAD请求到服务器上获取该网页的头部信息。

四、接口响应机制

1.  同步交互:发送一个请求,需要等待返回,然后才能够发送下一个请求,需要等待,即用户行为请求成功后(如登录、支付),需要返回验证结果后,才能登录或支付成功。

    2.  异步交互:发送一个请求,不需要等待返回,随时可以再发送下一个请求,不需要等待,即用户行为请求成功后,系统收到请求后异步同步结果,调用方无须等待每个请求的调用结果。

五、API接口的安全机制

 1.  签名验证机制的实现方式和作用:API接口通常会对请求进行签名验证以确保数据的完整性和安全性。签名验证机制可以通过多种方式实现,其中最常见的是采用HMAC算法和数字证书技术。

HMAC算法是一种基于哈希函数的消息认证码算法,它可以生成一个固定长度的随机字符串作为签名值;数字证书则是一种由权威机构颁发的电子凭证,可以用来证明公钥的合法性和身份的真实性。通过签名验证机制可以有效地防止恶意攻击和数据篡改等问题的发生。

    2.  OAuth授权机制的实现方式和作用:OAuth授权机制是一种常用的API接口安全机制,它通过将用户的身份认证和数据访问权限分离开来来保证系统的安全性。

具体来说,OAuth授权机制包括以下几个步骤:用户向第三方应用发起授权请求;第三方应用将用户的授权信息发送给目标API接口;目标API接口根据授权信息判断用户是否有权访问该资源;如果用户有权访问该资源,则返回相应的数据内容;否则返回错误信息或者拒绝访问。通过OAuth授权机制可以有效地保护用户的隐私和数据安全。

    3.  SSL/TLS安全协议在API接口中的应用:SSL/TLS安全协议是一种广泛使用的网络安全协议,它可以为数据传输提供加密和认证服务。在API接口中,SSL/TLS安全协议可以用来保护数据的机密性和完整性,防止数据被窃取或者篡改。

具体来说,SSL/TLS安全协议可以通过握手协议来建立安全通道;通过对数据进行加密和解密来保证数据的机密性;通过对证书进行验证来保证数据的完整性和合法性。通过SSL/TLS安全协议的应用可以有效地提高API接口的安全性和可靠性。

以上3种API的安全机制都是基于在不同的业务场景中使用,通俗来讲,就是谁可以访问这个接口,通过什么样的方式访问,访问的权限范围有哪些。差异在于不同安全机制的成本和身份验证的方式不同(对应的要求不同)。

举个简单例子,你想进一个相对不那么封闭的场所,只需要和里面认识的人打个招呼,就会放你进去。但是像坐飞机这样对身份识别要求比较高的“场所”,需要你有相关的证件(身份公证)才能进入,以及你登机之后由于你的身份是乘客你只能在客舱,是不能进入驾驶舱操纵飞机。

六、API接口速率限制

我们要考虑的最后一种安全机制是用来防御恶意或偶然的DoS攻击,确保可用性的机制。DoS攻击的原理是发送大量合法请求,导致API需要的资源被耗尽。这些资源包括CPU时间、内存和磁盘使用率、电源等。通过向API中注入大量的虚假请求,这些资源将全部被用于服务这些请求,而无暇顾及其他。除了发送大量的请求外,攻击者还可能发送消耗大量内存的超大请求,或者发送慢速请求,这些都会导致资源长时间被占用,并且恶意用户不需要花费太多精力。

抵御这些攻击的关键是要能识别出一个客户端(或一组客户端)使用的资源(时间、内存、连接数等)超过了它的合理份额。通过限制用户可使用的资源,就可以降低这种攻击风险。一旦用户通过身份验证,应用程序就可以强制为用户指定配额(quota)资源,限制他们可以执行的操作。比如,你可以限制每个用户每小时只能发送一定数量的API请求,防止他们发送大量的请求来冲击系统。采用计费的方式来限制用户请求,既有商业目的,也有安全方面的考量。

图片

七、API接口文档

前面讲到的关于接口的请求方式、类型、原理、安全机制等,产品经理能够简单了解一些就可以满足日常工作中的需要。接口文档是产品经理日常工作中经常会使用到的,特别是做开放平台或B端的产品经理,需要经常的看和写接口文档。

那如何看接口文档呢?首先,看接口文档的场景一般是自身业务模块需要获取外部的数据,但又不想自己重新开发,寻找外部已经实现的有开放能力的供应商(包含企业内部的)。比如淘宝开放平台、微信开放平台等等,需要获取淘宝订单或者使用微信支付,不需要自己开发对应的工具,可以调用对方的开放接口。

接口文档一般包含三个部分,即接口说明(签名获取方法、访问频率和并发、错误码)、接口参数(包括请求参数和返回参数)以及接口代码示例。

其次,是要明确自身的业务需求,需要通过外部接口获取什么能力,具体到需要什么参数。去供应商的开放平台找到对应的接口,查看接口返回参数是否有你想要的信息,注意一些用户个人信息参数都是加密的,还需要通过解密接口获取。

最后,如果在接口满足你诉求的之后,再去看开放平台需要获取这些接口的要求是什么,以及接口开放的权限范围,看下自己是否满足这些要求。如果不去看的话,可能会白白浪费很多调研时间。

 写接口文档,接口文档的查看对象一般是研发和测试人员,所以大致内容就包括接口的使用场景、接口请求方式、错误码、接口说明等几个部分。其中接口说明分为请求参数和返回参数,请求参数包含:英文字段、字段类型、示例值、是否必填、字段说明。返回参数包含:英文字段、字段类型、示例值、字段说明。如下图:

总结与展望

API接口是数字化时代的重要基础设施之一,它为不同应用程序之间的集成和交互提供了强大的支持和便利。未来随着人工智能、物联网等新技术的发展和应用,API接口的作用将会越来越重要。同时,为了更好地满足用户需求和应对安全威胁,API接口的设计和使用也将面临更多的挑战和机遇。因此,我们需要不断地学习和探索新的技术和方法,以推动API接口的发展和应用。

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

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

相关文章

嵌入式养成计划-36----C++引用--const--函数重载--结构体--类

八十、 引用 80.1 概念 引用是给目标取了个别名。引用与目标,它俩的地址一样 80.2 格式 数据类型 &引用名 同类型的变量名;数据类型 &引用名 同类型的变量名; eg:int a;int &b a; //b引用a,给a取个别名叫b80.3…

ps安装遇到问题

安装PhotoShop报错 无法写入注册表值请检查权限(错误代码160)_ps安装无法写入注册表值错误160_Zhac的博客-CSDN博客在Visual Studio中创建DLL项目 打开VS 新建一个项目:文件→→新建→→项目 选择Visual C#类库(.NET Framework)Unity当前只支持最高 3.5版本将UnityE…

MySQL增删查改(进阶1)

一、数据库约束 约束:按照一定条件进行规范的做事; 表定义的时候,某些字段保存的数据需要按照一定的约束条件; 1.null约束 字段null:该字段可以为空;not null:该字段不能为空不指定的话就是…

Bigemap是如何在生态林业科技行业去应用的

选择Bigemap的原因: ①之前一直是使用的谷歌地球,现在谷歌不能使用了就在网上搜索找一款可以替代的软件,工作使用需求还是挺大的,谷歌不能用对工作进展也非常影响,在网上搜索到软件大部分功能都可以满足需求 ②软件卫…

小白自学—网络安全(黑客技术)笔记

目录 一、自学网络安全学习的误区和陷阱 二、学习网络安全的一些前期准备 三、网络安全学习路线 四、学习资料的推荐 想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客! 网络安全可以基于攻击和防御视角来分类…

Unity Golang教程-Shader编写一个流动的云效果

创建目录 一个友好的项目,项目目录结构是很重要的。我们先导入一个登录界面模型资源。 我们先创建Art表示是美术类的资源,资源是模型创建Model文件夹,由于是在登录界面所以创建Login文件夹,下面依次是模型对应的资源&#xff0c…

3D 生成重建004-DreamFusion and SJC :TEXT-TO-3D USING 2D DIFFUSION

3D 生成重建004-DreamFusion and SJC :TEXT-TO-3D USING 2D DIFFUSION 文章目录 0 论文工作1 论文方法1.1论文方法1.2 CFG1.3影响1.4 SJC 2 效果 0 论文工作 对于生成任务,我们是需要有一个数据样本,让模型去学习数据分布 p ( x ) p(x) p(x…

如何查看端口占用(windows,linux,mac)

如何查看端口占用,各平台 一、背景 如何查看端口占用?网上很多,但大多直接丢出命令,没有任何解释关于如何查看命令的输出 所谓 “查端口占用”,即查看某个端口是否被某个程序占用,如果有,被哪…

HDLbits: Shift18

先补充一下算术移位寄存器和按位移位寄存器&#xff1a; SystemVerilog具有按位和算术移位运算符。 按位移位只是将向量的位向右或向左移动指定的次数&#xff0c;移出向量的位丢失。移入的新位是零填充的。例如&#xff0c;操作8’b11000101 << 2将产生值8’b00010100…

【LeetCode高频SQL50题-基础版】打卡第3天:第16~20题

文章目录 【LeetCode高频SQL50题-基础版】打卡第3天&#xff1a;第16~20题⛅前言 平均售价&#x1f512;题目&#x1f511;题解 项目员工I&#x1f512;题目&#x1f511;题解 各赛事的用户注册率&#x1f512;题目&#x1f511;题解 查询结果的质量和占比&#x1f512;题目&am…

拆解CPU的基本结构和运行原理

CPU的基本结构 CPU是一个计算系统的核心 南北桥芯片将CPU与外设连接起来 CPU执行流程 CPU的电路基础 组合电路基本原理 时序电路基本原理 多核成为主流 汇编语言和寄存器 中断的基本原理 中断的产生 中断服务程序 CPU 做为计算机的总司令官&#xff0c;它管理着计算…

NEFU数字图像处理(2)图像增强

一、背景 图像在传输或处理过程中会引入噪声或使图像变模糊&#xff0c;从而降低了图像质量&#xff0c;甚至淹没了特征给分析带来困难&#xff0c;因此要增强特征&#xff0c;进行处理 图像增强按特定的需要突出一幅图像中的某些信息同时&#xff0c;削弱或去除某些不需要的信…

一文带你了解IAM(身份与访问管理)

一文带你了解IAM&#xff08;身份与访问管理&#xff09; 在进入新公司时&#xff0c;领导说让我们改版之后采用IAM的方式进行资源管理&#xff0c;what&#xff1f;IAM是什么&#xff1f;恕我无知了。后来查阅了相关资料才知道。 IAM不仅是一种产品&#xff0c;也是大部分产品…

NewStarCTF 2023 WEEK1|PWN ret2text

拖进IDA&#xff0c;查看 int __cdecl main(int argc, const char **argv, const char **envp) {char buf[32]; // [rsp0h] [rbp-20h] BYREFinit();puts("Welcome to NewStar CTF!!");puts("Show me your magic");read(0, buf, 0x100uLL);return 0; } ma…

Golang 程序漏洞检测利器 govulncheck(三):github 集成方法

上一篇文章详细介绍了 Golang 程序漏洞扫描工具 govulncheck 使用的漏洞数据库&#xff08;Go vulnerability database&#xff09;&#xff0c;本文详细讲解下 Github 项目如何使用 govulncheck。 govulncheck 为 Golang 开发者提供了一种准确可靠的方式来了解程序中可能存在…

matlab高斯消元法求逆

算法实现基本与高斯消元法求解线性方程组相同&#xff0c;同样还是三层循环进行消元和回代&#xff0c;只是增广矩阵的规模由nn1变成了n2n&#xff0c;因此算法复杂度仍然为O(n3)。 A[1,1,2,1;1,2,0,1;1,4,2,1;1,8,2,4]; beye(4); A_b[A,b]; [n,m]size(A_b); for i1:nfor jm:-…

零基础,想做一名网络安全工程师,我可以去哪里学,或者有什么建议?

这应该是全网最全的网络安全扫盲帖了&#xff01;发CSDN也有一段时间了&#xff0c;经常会有朋友在后台问我各种问题&#xff0c;比如“应该如何选方向”、“网络安全前景如何”、“怎么选适合的安全岗位”等等。于是今天借这个问题来给大家好好说说&#xff0c;如果你是零基础…

C++简单上手helloworld 以及 vscode找不到文件的可能性原因

helloworld #include <iostream>int main() {std::cout << "hello world!" << std::endl;return 0; }输入输出小功能 #include <iostream> using namespace std; /* *主函数 *输出一条语句 */int main() {// 输出一条语句cout << &q…

有关java连接数据库报错的解决方案

Ⅰ 报错信息 在使用java连接数据库时&#xff0c;使用下面代码 Class.forName("com.mysql.jdbc.Driver"); Connection connection DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test1", "test1", "test");出现的报错…

Python3入门教程||Python3 SMTP发送邮件

在Python3 中应用的SMTP&#xff08;Simple Mail Transfer Protocol&#xff09;即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则&#xff0c;由它来控制信件的中转方式。 python的 smtplib 提供了一种很方便的途径发送电子邮件。它对 smtp 协议进行了简单的…