API接口知识小结(电商API接入)

news2024/10/6 12:32:18

应用程序接口API(Application Programming Interface),是提供特定业务输出能力、连接不同系统的一种约定。这里包括外部系统与提供服务的系统(中后台系统)或后台不同系统之间的交互点。包括外部接口、内部接口,内部接口又包括:上层服务与下层服务接口、同级接口。

如果不想被视为技术大佬眼中什么都不懂的需求搬运工,清楚接口的相关知识是很有必要的。

常见web接口是http/https协议的接口,多用于外部系统或前端系统的调用,因为此类接口地址要暴露在外部,所以必须对接口的安全性做较高程度的校验。还要一种基于开源rpc构建的跨系统接口调用接口方案,此类主要用于大公司内网各系统间的互相调用,此类接口服务治理能力更强,接口相应速度更块。以下内容以http接口为例展开的讨论。


 

一、API接口请求方式类型

常见的http请求方式包括:get(查)、post(增),除此之外还有put(改)、delete(删)等。接口所属类型是由业务决定的。比如你打开淘宝API,展示的首页内容就需要用到get接口,获取页面信息,你看中了宝贝要下单,添加你的收获地址时,用的则是post接口。而这两种也是其中最常见的两种接口类型

1)get类型接口

格式:请求数参数写在网址后面,用”?”连接,多个参数之间用”&”连接。

场景:get型接口用于获取信息,多用于查询数据,如菜单列表展示,搜索展示,订单查询,优惠券查询等需要其他系统返回数据时使用。一般情况下请求的数据量较小,返回速度快,不过接口是暴露在外面的,所以会有一定的风险。

2)post型接口

说明:向指定资源位置提交数据(如提交表单、上传文件)来进行请求,post请求可能会导致新资源的建立。

场景:如注册、上传、发帖等功能,这种请求数据量大,安全性要求高。

其他接口类型如put(改)、delete(删)、patch等使用评率稍低一些,此处不再赘述。

二、接口响应机制类型

从返回上区分,分为 同步接口、异步接口

1)同步交互

指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;

比如登录接口,执行登录操作时,将用户名、密码、token等字段加密后通过接口校验,需要返回验证结果后,才能登录成功。

2)异步交互

指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。

如用户领导优惠券,只需要将用户的领券行为请求成功,资产系统收到请求后异步操作用户发券,通过异步的方法执行发券,调用方无须等待每个请求的调用结果。

区别:一个需要等待,一个不需要等待,在不影响用户体验的情况下,我们的项目开发中一般会优先选择不需要等待的异步交互方式。

哪些情况建议使用同步交互呢?比如用户登录、银行的转账系统,对数据库的保存操作等等,都会使用同步交互操作,其余情况都优先使用异步交互。

三、接口的触发形式类型

1)分发接口

一个系统产生新数据的时候就分发给其它系统(也可以是多个)。

中台系统的核心思想是高内聚、低耦合,所以分发接口的使用场景还是比较多的。比如有一个主渠道系统来管理所有的渠道数据,而渠道数据是其他系统如商品系统、促销系统经常要使用到的信息。所以一旦出现新的渠道或者发生渠道变更,需要分发给其他所有对接了各个系统,实现对最新渠道的功能支撑。

2)订阅接口

一个系统在需要的时候调用其他系统的接口进行数据订阅。

比如订单系统生成订单时,因为很多外部系统可能需要及时获取订单状态信息。而订单系统也不知道要分发给哪些系统,这时候一般会将订单推送至特定的消息队列,比如KFK,其他由需要跟进订单状态的的系统订阅KFK消息后,可以即使获取订单完成信息,进行触发下一个动作。

四、其他API接口基本组成

再既定的业务下,接口请求类型、响应机制等确定后,再以微信支付API为例,了解下接口的其他组成内容。

1)应用场景

顾名思义,此接口适用于的场景,明确接口的业务用途。

2)入参及出参

入参是接口请求所需要的变量参数,其中包括必填参数和非必填参数,非必填并非是可以忽略的,比如上面的入参中,签名类型为非必填,如果未传此参数,则默认此签名类型为MD5,如果使用的并非此类签名类型,则此项为必填项。如果是普通订单查询,入参时间非必填,则返回结果是用户全部订单,或者用户特定时间订单的区别。

3)错误码

接口请求并非每次都能成功,所以在接口开发时会对可能失败的情况进行错误码区分,在接口联调时可以根据返回的错误码快递定位问题。如果错误码不够全面,那在接口调用失败的时候,需要反复定位,降低开发效率。

五、接口安全性校验

接口完成业务逻辑开发后,接下来要考虑的就是安全性问题了,接口的安全性问题主要来源于几方面考虑:

1)请求来源是否合法?

即接口的伪装攻击,因为接口是对外的,在公网环境中,接口地址是暴露的,收到的请求有可能是恶意非法请求;如果真的是合法请求,也需要知道这个请求的来源,同时这个请求来源不能否认。这里引入“签名”的概念,以及签名的防伪装及抗否认性特性。

近些年各大企业强制使用https替换掉原有的http接口,正是因为https所使用的的证书安全性更高。

2)请求是否会被篡改,返回数据可能会被截取

因为接口是对外的,所以接收请求和返回数据的时候,是不可能使用明文方式传输的,否则一旦被恶意截取,会造成极大风险。所以请求数据及返回数据都是需要加密的,这样即使数据被截取,也不用泄露数据的内容。这里介绍几种现在常见的加密方法。

DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合;

3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高;

RSA:非对称加密,由 RSA公司发明,是一个支持变长密钥的公共密钥算法,需要加密的文件块的长度也是可变的;既可以实现加密,又可以实现签名。

如果是用户账号相关,现在会使用token加密用户信息,用户请求身份信息时,服务端会分配token存在缓存中,后续请求会将token与时间戳一起打包加密,这样即使请求数据被截获,因为不知道token的值,数据也不会被解析出来。

3)如何防范接口的重放攻击,防重放攻击是什么呢?

就是把你的请求原封不动地多次发放,请求都会通过验证进入到正常逻辑中,会造成服务端接口拥堵并且会造成实际损失。

防重放一般需在请求参数加上 时间戳 + 随机数,通过时间戳确保接口是最新的请求,而随机数相同则可以认定为是重放攻击。

六、接口性能相关

如果是访问量比较大的接口,再上线前肯定需要进行压力测试。因为普通的开发自测和生产模拟是不能推算出高并发时候接口是否可正常运行。

1)TPS

Transaction Per Second 每秒系统处理的交易或事物的数量,衡量系统处理能力的重要指标。

2)RT

响应时间,从客户端发送一个请求开始,到客户端接收到从服务器返回的响应结果结束所经历的时间,包括请求发送时间,网络传输时间和服务器处理时间三部分。

3)吞吐量

指的是在一次性能测试过程中网络上传输的数据量的总和。

用户的响应时间自不必说,时间太久伤用户体验,及时处于高并发期,用户的响应时间依然需要控制到最低,一般不超过5s;

tps则是高并发的指标,一般提供服务的接口,需要考虑到最极端情况下的并发数,这些数量一般来自于运营的活动策划和往期的数据趋势预估,以此为依据,保证自己的接口可以支持最高的并发数,而验证这些使用的一般是压力测试。如正常情况下压测时tps可以达到2000时接口正常,就可以保证2000的实际并发。

七、接口需要做哪些测试

接口测试其实是白盒测试,首页要明确系统的能力输出,明确服务覆盖是否满足需求。以业务逻辑推接口参数。

1)入参不符合要求需要有明确错误码,报错信息和日志,方便问题复现与定位。

2)如果另有参数处理逻辑的链路,也需要一并验证,如购买网易云音乐会员,订单生成后会去权益系统加权,加权成功后会有短信通知用户,但加权接口和订单信息中都没有用户手机号,所以虽然入参中没有用户手机号,但需要根据用户的username去查询手机号,并执行短信发放的操作。

其他验证目标如:代码覆盖率是否达到要求、性能指标是否满足要求、安全指标是否满足要求则是更为专业性的测试指标了。

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

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

相关文章

Redis专题学习(一)Redis核心数据结构实战与高性能原理剖析

redis是key-value的存储格式, key是string类型的, value可以有五种基本的数据结构:string、hash、list、set、zset 来看看 这5中基本数据类型的基本使用和应用 一.字符串string string是最常见和最基本的数据结构 基本使用: …

leetcode 501. 二叉搜索树中的众数

2023.7.10 这道题我的思路是适用于任意二叉树的思路&#xff1a; 先用任意一个遍历方法将节点保存至map<int,int>中&#xff0c;key为节点值&#xff0c;value为频率。由于map没有对value&#xff08;频率&#xff09;排序的方法&#xff0c;所以将map的键值对转移至vec…

TCP协议三次握手的抓包模拟

三次握手(Three-way Handshake)&#xff0c;是指建立一个 TCP 连接时&#xff0c;需要客户端和服务器总共发送3个包。 第一次握手([SYN], Seq x) 客户端发送一个SYN标记的包&#xff0c;Seq初始序列号x&#xff0c;发送完成后客户端进入SYN_SEND状态。 第二次握手([SYN,ACK]…

一个面试知识点: CreateThread() 与 _beginthread() 的区别

如题: 像现在有c11, 加上不写原生winApi 很久没有用这俩玩意了, 真的忘记了, 被问到这个的时候, 我还清晰记得之前在WPS里的时候专门了解这个 CreateThread的简单用法贴下面了 c win32API 【CreateThread】创建线程 其实就简单的记住 1._beginthread 底层还是 调用的 Creat…

calltree的安装与使用

目录 0 calltree 和 graphviz的关系 1 graphviz的安装很简单 : 2 有难的是calltree的安装,需要改一下代码. Doxygen的使用 参考 这个人的笔记都挺好的, 没事多看看 0 calltree 和 graphviz的关系 要想绘制函数调用图的话,需要用到2个工具, calltree 和 graphviz. calltr…

【记录】Yolov5官网下载避坑记录

写在前面&#xff1a;刚开始接触Yolov5时&#xff0c;对一些基础的概念很模糊&#xff0c;在官网下载也不知道该下载什么版本好。后续更是遇到了一些奇奇怪怪的坑。在此记录一下最初的研究过程&#xff0c;顺带填一下yolov5避坑专栏后面的坑。 目录 一、Yolov5误区 二、官网…

UVM中sequence机制-数据产生及传递机制

一 基础知识 参考 UVM——sequence机制(数据激励的产生、配置方式)_uvm激励_SD.ZHAI的博客-CSDN博客https://blog.csdn.net/weixin_46022434/article/details/105600081 1.1 sequence执行流程 1.2 sequence的启动方式 1.3 sequence数据产生--body()

TortoiseGit 入门指南03:将修改提交到版本库

你现在应该已经有了一个仓库&#xff0c;在工作过程中会对项目做一些修改&#xff0c;比如添加代码、修复错误等等&#xff0c;你将不定时的将这些更改 提交&#xff08;commit&#xff09;到代码仓库。 术语 提交 是将 暂存区 内容放入 版本库 。这个过程涉及到 Git 的一些基…

如何对你的代码进行内存消耗分析

对象生命周期 下面两种创建对象的语句有什么不同呢? 对于 Object myObject;,该对象被创建在栈上,它的特点就是脱离作用域后会自动销毁。而对于 new Object(),它会在堆上动态创建一个对象,它的特点就是即使脱离作用域,该对象也会一直存在,除非你手动释放(delete)它,否…

Layui 简单介绍及入门

目录 一.Layui &#xff08;国产品牌&#xff09; 1.1 Layui是什么 二.比较layui和easyui&#xff0c;bootstrap的区别 2.1 layui和bootstrap的对比 2.2 layui和easyui对比 三.Layui入门 四.案例 一.Layui &#xff08;国产品牌&#xff09; 1.1 Layui是什么 用我的话来…

峟思科普:水库坝体的裂缝防治措施有哪些

水库大坝的建设与施工是一项庞大的系统工程&#xff0c;它包括设计、施工、监理等各个环节。而裂缝问题是整个工程中最常见的问题之一&#xff0c;大坝工程中出现裂缝是一件很严重的事&#xff0c;不仅影响大坝的使用寿命&#xff0c;而且严重影响水库工程的整体效益。坝体裂缝…

让GPT来聊聊目前软件测试行业的就业形式

最近两个月一直处于忙碌状态&#xff1a;跳槽、转行、学习新的编程语言&#xff08;Python Golang&#xff09;、赶工期、面试招人……也正是这一些列的经历&#xff0c;对目前的就业形势和软件从业人员的发展有了一些新的观察和思考&#xff0c;在这篇文章分享给大家。 整体…

亚马逊云科技143项安全标准与合规性认证,帮助企业满足安全合规要求

在亚马逊云科技&#xff0c;为满足客户不断变化的需求&#xff0c;亚马逊云科技持续创新与迭代&#xff0c;设计的服务能帮助客户满足最严格的安全和合规性要求。针对安全相关工作&#xff0c;亚马逊云科技服务团队与Amazon Security Guardians云守护者项目密切配合&#xff0c…

Jira Tempo :如何创建 Dynamic Dropdown 类型的 Work Attributes?

官方示例&#xff1a; Jira Tempo 可以创建以下类型的工作属性&#xff08;Work Attributes&#xff09;: 其中&#xff0c;Dynamic Dropdown 支持外部接口&#xff0c;可以自己提供一个接口连接&#xff0c;如下&#xff1a; 官方示例中&#xff0c;给了一个 php 版本的示例…

UVM学习笔记--寄存器模型 Register Model

1.寄存器模型( Register model )简介 UVM的寄存器模型是一组高级抽象的类&#xff0c;用来对DUT中具有地址映射的寄存器和存储器进行建模。它非常贴切的反映DUT中寄存器的各种特性&#xff0c;可以产生激励作用于DUT并进行寄存器功能检查。通过UVM的寄存器模型&#xf…

通信算法之176: 基于Matlab的OFDM通信系统关键基带算法设计6-流程

一. 接收算法流程 粗同步&#xff08;分组检测&#xff09; 载波同步&#xff08;精细频偏估计&#xff09; 精同步&#xff08;OFDM起始&#xff0c;符号同步&#xff09; 1.4 信道估计&#xff08;长序列&#xff09; 1.5 信道均衡&#xff08;所有数据OFDM符号&#xff…

(黑客)自学路线

一、什么是网络安全&#xff08;黑客&#xff09; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领…

基于SpringBoot+vue的准妈妈孕期交流平台设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

【工业机器人】用于轨迹规划和执行器分析的机械手和移动机器人模型(MatlabSimulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

STM32——使用cubemx和keil点亮第一个灯

一、环境 cubemx安装和搭建见博文 链接: STM32CubeMX安装 keil安装见软件安装管家&#xff0c;注意要是MDK版 二、cubemx操作 1.打开cubemx 2.选择ACCESS TO MCU SLCTOR,创建一个新的工程。 3.选择合适的芯片型号 具体的开发板芯片型号根据自己的板子来。我的是STMF429IG 4…