产品经理必备知识——API接口
connygpt 2024-11-08 10:33 9 浏览
进入互联网时代之后,API接口的出现为不同应用程序搭建起了桥梁,那么,你是否真的了解API呢?这篇文章里,作者对API接口的分类、原理、API接口的请求方式等问题进行了总结,一起来看。
在古代,我们的传输信息的方式有很多,比如写信、飞鸽传书,以及在战争中使用的烽烟,才有了著名的烽火戏诸侯,但这些方式传输信息的效率终究还是无法满足高速发展的社会需要。如今万物互联的时代,我通过一部手机就可以实现衣食住行的方方面面,比如:在家购物、远程控制家电、自动驾驶等等,背后都离不开我们今天要聊的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请求到服务器上获取该网页的头部信息。
四、接口响应机制
- 同步交互:发送一个请求,需要等待返回,然后才能够发送下一个请求,需要等待,即用户行为请求成功后(如登录、支付),需要返回验证结果后,才能登录或支付成功。
- 异步交互:发送一个请求,不需要等待返回,随时可以再发送下一个请求,不需要等待,即用户行为请求成功后,系统收到请求后异步同步结果,调用方无须等待每个请求的调用结果。
五、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接口的发展和应用。
本文由 @Glee 原创发布于人人都是产品经理,未经许可,禁止转载
题图来自 Unsplash,基于 CC0 协议
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。
- 上一篇:产品经理如何绕开API的坑
- 下一篇:前后端联系的桥梁-- WebAPI
相关推荐
- 3分钟让你的项目支持AI问答模块,完全开源!
-
hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的Next-Admin的最新更新。最近对这个项目做了一些优化,并集成了大家比较关注...
- 干货|程序员的副业挂,12个平台分享
-
1、D2adminD2Admin是一个完全开源免费的企业中后台产品前端集成方案,使用最新的前端技术栈,小于60kb的本地首屏js加载,已经做好大部分项目前期准备工作,并且带有大量示例代码,助...
- Github标星超200K,这10个可视化面板你知道几个
-
在Github上有很多开源免费的后台控制面板可以选择,但是哪些才是最好、最受欢迎的可视化控制面板呢?今天就和大家推荐Github上10个好看又流行的可视化面板:1.AdminLTEAdminLTE是...
- 开箱即用的炫酷中后台前端开源框架第二篇
-
#头条创作挑战赛#1、SoybeanAdmin(1)介绍:SoybeanAdmin是一个基于Vue3、Vite3、TypeScript、NaiveUI、Pinia和UnoCSS的清新优...
- 搭建React+AntDeign的开发环境和框架
-
搭建React+AntDeign的开发环境和框架随着前端技术的不断发展,React和AntDesign已经成为越来越多Web应用程序的首选开发框架。React是一个用于构建用户界面的JavaScrip...
- 基于.NET 5实现的开源通用权限管理平台
-
??大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!??今天小编推荐一款基于.NE...
- StreamPark - 大数据流计算引擎
-
使用Docker完成StreamPark的部署??1.基于h2和docker-compose进行StreamPark部署wgethttps://raw.githubusercontent.com/a...
- 教你使用UmiJS框架开发React
-
1、什么是Umi.js?umi,中文可发音为乌米,是一个可插拔的企业级react应用框架。你可以将它简单地理解为一个专注性能的类next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助...
- 简单在线流程图工具在用例设计中的运用
-
敏捷模式下,测试团队的用例逐渐简化以适应快速的发版节奏,大家很早就开始运用思维导图工具比如xmind来编写测试方法、测试点。如今不少已经不少利用开源的思维导图组件(如百度脑图...)来构建测试测试...
- 【开源分享】神奇的大数据实时平台框架,让Flink&Spark开发更简单
-
这是一个神奇的框架,让Flink|Spark开发更简单,一站式大数据实时平台!他就是StreamX!什么是StreamX大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域...
- 聊聊规则引擎的调研及实现全过程
-
摘要本期主要以规则引擎业务实现为例,陈述在陌生业务前如何进行业务深入、调研、技术选型、设计及实现全过程分析,如果你对规则引擎不感冒、也可以从中了解一些抽象实现过程。诉求从硬件采集到的数据提供的形式多种...
- 【开源推荐】Diboot 2.0.5 发布,自动化开发助理
-
一、前言Diboot2.0.5版本已于近日发布,在此次发布中,我们新增了file-starter组件,完善了iam-starter组件,对core核心进行了相关优化,让devtools也支持对IAM...
- 微软推出Copilot Actions,使用人工智能自动执行重复性任务
-
IT之家11月19日消息,微软在今天举办的Ignite大会上宣布了一系列新功能,旨在进一步提升Microsoft365Copilot的智能化水平。其中最引人注目的是Copilot...
- Electron 使用Selenium和WebDriver
-
本节我们来学习如何在Electron下使用Selenium和WebDriver。SeleniumSelenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具...
- Quick 'n Easy Web Builder 11.1.0设计和构建功能齐全的网页的工具
-
一个实用而有效的应用程序,能够让您轻松构建、创建和设计个人的HTML网站。Quick'nEasyWebBuilder是一款全面且轻巧的软件,为用户提供了一种简单的方式来创建、编辑...
- 一周热门
- 最近发表
- 标签列表
-
- kubectlsetimage (56)
- mysqlinsertoverwrite (53)
- addcolumn (54)
- helmpackage (54)
- varchar最长多少 (61)
- 类型断言 (53)
- protoc安装 (56)
- jdk20安装教程 (60)
- rpm2cpio (52)
- 控制台打印 (63)
- 401unauthorized (51)
- vuexstore (68)
- druiddatasource (60)
- 企业微信开发文档 (51)
- rendertexture (51)
- speedphp (52)
- gitcommit-am (68)
- bashecho (64)
- str_to_date函数 (58)
- yum下载包及依赖到本地 (72)
- jstree中文api文档 (59)
- mvnw文件 (58)
- rancher安装 (63)
- nginx开机自启 (53)
- .netcore教程 (53)