API接口知识小结及电商数据平台商品详情接口请求案例

news2024/9/30 5:36:37

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

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

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


 

一、接口请求方式类型

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

1)get类型接口

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

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

2)post型接口

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

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

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

二、接口响应机制类型

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

1)同步交互

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

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

2)异步交互

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

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

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

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

三、接口的触发形式类型

1)分发接口

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

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

2)订阅接口

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

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

四、其他API接口基本组成

再既定的业务下,接口请求类型、响应机制等确定后,再以电商数据平台商品详情接口为例,了解下接口的其他组成内容。

1)应用场景

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

  • 商品推荐:通过对用户的购买历史和行为数据分析,为用户推荐相关商品,提高销售转化率。
  • 价格分析:通过对竞争对手和同行业的商品价格进行分析,制定合理的定价策略。
  • 库存管理:可以根据商品的销售情况,进行选品和库存管理,保证商品供应充足,降低库存积压等风险。
  • 用户画像:通过对用户购买历史和行为数据进行分析,揭示用户的兴趣偏好和消费习惯,为精准营销提供依据。
  • 营销活动:可以根据商品数据,制定合适的促销方案,吸引用户进行购买,提升销售额和客户忠诚度。
  • 客服服务:利用商品数据进行客户反馈分析,了解用户对商品的疑问和意见,及时回应用户需求和问题,提升客户满意度。

使用API接口的人群分为以下几类:

开发者:API接口提供了一种方便的方式,使得开发者能够利用其他系统或平台的功能来构建自己的应用程序或网站。

数据分析师:数据分析师需要从多个平台或系统中收集数据,API接口为他们提供了快速获取数据的方式。

商业用户:商业用户可以使用API接口来整合不同平台上的交易信息,以便监控和管理产品库存、市场销售等信息。

系统管理员:系统管理员可以使用API接口来监控和管理系统的运行状况,以便及时发现并解决问题。

2)入参及出参

响应参数

名称类型必须示例值描述

item

item[]1宝贝详情数据

num_iid

Bigint1520813250866宝贝ID

title

String1三刃木折叠刀过安检创意迷你钥匙扣钥匙刀军刀随身多功能小刀包邮宝贝标题

desc_short

String0商品简介

promotion_price

Int0优惠价

price

Float125.8价格

total_price

Float00

suggestive_price

Float00

orginal_price

String025.80原价

nick

String0欢乐购客栈掌柜昵称

num

Int03836库存

min_num

Int00最小购买数

detail_url

String0http://item.taobao.com/item.htm?id=520813250866宝贝链接

pic_url

String1//gd2.alicdn.com/imgextra/i4/2596264565/TB2p30elFXXXXXQXpXXXXXXXXXX_!!2596264565.jpg宝贝图片

brand

String0三刃木品牌名称

brandId

Int08879363品牌ID

rootCatId

Int050013886顶级分类ID

cid

Int150014822

crumbs

Mix0[]导航菜单

created_time

String0

modified_time

String0

delist_time

String0

desc

String0商品详情

desc_img

Mix0[]商品详情图片

item_imgs

Mix0item_imgs[]商品图片

item_weight

String0

item_size

String0

location

String0发货地

express_fee

Float00.00快递费用

ems_fee

Float0EMS费用

post_fee

Float0物流费用

shipping_to

String0发货至

has_discount

Boolean0false是否有优惠

video

video[]0商品视频

is_virtual

String0

is_promotion

Boolean0false是否促销

props_name

String01627207:1347647754:颜色分类:长方形带开瓶器+送工具刀卡+链子;1627207:1347647753:颜色分类:椭圆形带开瓶器+送工具刀卡+链子;商品属性名。格式为pid1:vid1:name1:value1;pid1:vid2:name2:value2。

prop_imgs

prop_imgs[]0商品属性图片列表

property_alias

String020509:9974422:36;1627207:28326:红色;20509:9975710:38;1627207:28326:红色;20509:9981357:40;1627207:28326:红色销售属性值别名。格式为pid1:vid1:alias1;pid1:vid2:alia2。

props

Mix0[{ "name": "产地","value": "中国" }]商品属性

total_sold

Int0

skus

skus[]0商品规格信息列表

seller_id

Int02844096782卖家ID

sales

Int0138销量

shop_id

Int0151372205店铺ID

props_list

Mix0{20509:9974422: 尺码:36}商品属性

seller_info

seller_info[]1卖家信息

tmall

Boolean0false是否天猫

error

String0错误信息

warning

String0警告信息

url_log

Mix0[]

favcount

Int00

fanscount

Int00

method

String0item_tmall:pget_item

promo_type

String0

props_img

Mix01627207:28326": "//img.alicdn.com/imgextra/i2/2844096782/O1CN01VrjpXt1zyCc9DvERE_!!2844096782.jpg属性图片

shop_item

Mix0[]

relate_items

Mix0[]

 入参是接口请求所需要的变量参数,其中包括必填参数和非必填参数,非必填并非是可以忽略的。

3)错误码

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

错误码解释

状态代码(error_code)状态信息详细描述是否收费
0000success接口调用成功并返回相关数据
2000Search success but no result接口访问成功,但是搜索没有结果
4000Server internal error服务器内部错误
4001Network error网络错误
4002Target server error目标服务器错误
4003Param error用户输入参数错误忽略
4004Account not found用户帐号不存在忽略
4005Invalid authentication credentials授权失败忽略
4006API stopped您的当前API已停用忽略
4007Account stopped您的账户已停用忽略
4008API rate limit exceeded并发已达上限忽略
4009API maintenanceAPI维护中忽略
4010API not found with these valuesAPI不存在忽略
4012Please add api first请先添加api忽略
4013Number of calls exceeded调用次数超限忽略
4014Missing url param参数缺失忽略
4015Wrong pageToken参数pageToken有误忽略
4016Insufficient balance余额不足忽略
4017timeout error请求超时
5000unknown error未知错误

 

五、接口安全性校验

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

1)请求来源是否合法?

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

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

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

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

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

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

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

六、接口性能相关

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

1)TPS

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

2)RT

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

3)吞吐量

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

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

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

七、接口需要做哪些测试

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

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

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

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

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

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

相关文章

无涯教程-JavaScript - SUMXMY2函数

描述 SUMXMY2函数返回两个数组中相应值的差的平方和。 语法 SUMXMY2 (array_x, array_y)争论 Argument描述Required/OptionalArray_xThe first array or range of values.RequiredArray_yThe second array or range of values.Required Notes 参数应为数字或名称,数组或包…

Vite前端构建工具详解

Vite前端构建工具 Vite 是一款新兴的前端构建工具,它的出现带来了前端开发体验的革命性变化。本文将介绍 Vite 的基本概念和核心特性,并通过代码实例来演示其强大功能。 什么是 Vite? Vite 是由 Evan You(Vue.js 的创始人&#x…

掌握进度管理基本指南,保证项目不延期

项目管理中的进度管理是规划、制定、控制和监控项目时间表的过程,确保任务和活动按时完成。 假设你是一名项目经理,带着团队组织一场备受瞩目的音乐节。精确的时间安排是关键。你需要确保演出者准时到达并按计划表演,所有供应商都准备就绪&a…

「干货」洁净室悬浮粒子计数器全部常见型号参数汇总

我们的人体工程学设计轻巧的Lighthouse手持式3016-IAQ是市场上先进的手持式粒子计数器,其质量浓度模式的密度约为μg/ m3。Lighthouse手持式粒子计数器最多可提供6个粒径同时计数的通道,可在快速,易于阅读的彩色触摸屏上显示累积和差分粒子计…

推荐一个可以采集众多国内外电商网站数据的工具

淘宝API 接入地址 item_get 获得淘宝商品详情item_get_pro 获得淘宝商品详情高级版item_review 获得淘宝商品评论item_fee 获得淘宝商品快递费用item_password 获得淘口令真实urlitem_list_updown 批量获得淘宝商品上下架时间seller_info 获得淘宝店铺详情item_search 按关键…

做题杂记222

文章目录 题1题2题3题4 一些较简单的题目。里面有些小点,稍不留意跑起来也挺费时。 题1 leak 题目描述: #!/usr/bin/env python # -*- coding: utf-8 -*- from Crypto.Util.number import * from secret import FLAGm bytes_to_long(FLAG)def getpq(n…

新消费降温,良品铺子还能走多远?

如果时间倒退到多年前,杨红春应该不会料到现在良品铺子的境遇。 从2006年创立至今,前半段良品铺子经历了品牌升级,从线下发展到平台电商、社交电商,做APP客户端进行全渠道的营销,把一家曾入不敷出的小店,养…

echarts 轴文字内容太长导致显示不全解决方案

情况:Y轴内容是文字,内容太长可能会系那是不全。调整grid会导致短数据前的留白过于多。 解决方案: 方法一: 首先可以配置grid自适应 , containLabel 属性设置true (这常用于『防止标签溢出』的场景&…

51单片机光照强度检测自动路灯开关仿真( proteus仿真+程序+报告+讲解视频)

51单片机光照强度检测自动路灯开关仿真( proteus仿真程序报告讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0052 讲解视频 基于51单片机的光照检测自动路灯控制仿真设计( proteus仿…

42V转5V芯片——高效率、宽压输入范围和强大输出能力

42V转5V芯片——高效率、宽压输入范围和强大输出能力 摘要: 42V转5V芯片是一种电源管理解决方案,可以将高达42V的输入电压转换为稳定的5V输出电压。该芯片以其高效率、宽压输入范围和强大的输出能力而备受关注。它具有93%的转换效率,能够在广…

学Python的漫画漫步进阶 -- 第十五步.访问数据库

学Python的漫画漫步进阶 -- 第十五步.访问数据库 十五、访问数据库15.1 SQLite数据库15.1.1 SQLite数据类型15.1.2 Python数据类型与SQLite数据类型的映射15.1.3 使用GUI管理工具管理SQLite数据库 15.2 数据库编程的基本操作过程15.3 sqlite3模块API15.3.1 数据库连接对象Conne…

使用Tensorboard碰到AttributeError: module ‘distutils‘ has no attribute ‘version‘

当出现这个错误时 说明 当前tensorboard的版本和你安装的pytorch版本不匹配,tensorboard版本太 高,pytorch太低。 使用conda list查看你的setuptools版本 conda list我的版本有点高68,所以我需要降低版本,使用以下命令降低版本…

解读|美创深度参与5项电信和互联网行业数据安全标准发布实施

《数据安全法》、《个人信息保护法》等法律法规的颁布实施,坚持安全和发展并重的原则,积极应对复杂严峻的安全风险与挑战,加速构建数据安全保障体系,成为电信和互联网行业重要工作。 “安全发展、标准先行”,标准化工作…

ATLAS 200通过PCIE 接入RK3588-EP模式

ATLAS 200 作为算理模块,可以作为主/协处理器接入RK3588,有两种模式:RC 模式和EP模式 RC模式:rk3588 和 ATLAS 200 可分别独立处理自身业务数据,不存在业务互相依赖,二者可通过网络等方式进行通信,ATLAS …

用它免费查询电商评论数据,轻松实现品牌洞察!

item_review-获得淘宝商品评论 公共参数 名称类型必须描述keyString是调用key(注册账号获取key)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheString否[…

Spring配置非定义的Bean

前言 在前文中,xml配置文件中的Bean都是我们自己定义配置的,例如:UserDaoImpl,UserDAO等。但是在实际开发过程中有些功能类并不是我们自己定义的,而是使用第三方jar包中的,俺么这些Bean要想让Spring进行管…

2023年PMP考试改革情况?新教材和新题型?

改革就是使用新考纲和新教材。教材由第六版变为第七版,这个问题也不大,主要是根据考纲的内容出题,备考学习预测敏捷项目管理内容即可。 没有出新的改为新题型的通知,但要随时做好题型变化的准备,或许题型会增加填空题…

多少得有点升级,才能对得起价格!iPhone15系列电池寿命见长

我有一些好消息。根据我们的电池测试,iPhone 15系列中的每一款机型都比前代机型提供了更好的电池寿命。这可能是由于每部手机中都有稍大的电池和更高效的芯片。 我们对iPhone 15、iPhone 15 Plus、iPhone 15 Pro和iPhone 15 Pro Max进行了Tom’s Guide电池测试&…

SAP DN已发货但是需求还挂在MD04上的异常处理(SE38执行程序:ATP_VBBE_CONSISTENCY OR SDRQCR21)

背景:DN 80074061已经发完货,但是在MD04上还挂着它的需求 处理方法: HANA S4 版本, SE38 执行程序 ATP_VBBE_CONSISTENCY HANA之前的版本执行程序 SDRQCR21 以 ATP_VBBE_CONSISTENCY 为例,先选择模拟模式 执行&…

C#上位机:现代编程中的全能工具?

C#上位机:现代编程中的全能工具? C#作为现代、安全、易用的编程语言,在多领域具有广泛应用,尤其在上位机开发中脱颖而出。输入“777”,即刻获取关于上位机开发和数据可视化的专业学习资料,工业自动化、物…