当前位置: 首页 > news >正文

http(s)接口设计注意事项

http(s)在设计时应考虑:

一、签名认证

鉴权,如jwt方式等。

二、重要参数加密

如:用户的登录密码、银行卡号、转账金额、用户身份证等。

三、IP白名单

为了进一步加强API接口的安全性,防止接口的签名或者加密被破解了,攻击者可以在自己的服务器上请求该接口。

四、接口限流

如果API接口被第三方平台调用了,这就意味着着,调用频率是没法控制的。由此,需要对重要API接口做限流

五、参数校验与限制记录条数

如:校验必填字段是否为空,校验字段类型,校验字段长度,校验枚举值等等。这样做可以拦截一些无效的请求。

在Java中校验数据使用最多的是hiberateValidator框架,它里面包含了@Null、@NotEmpty、@Size、@Max、@Min等注解。用它们校验数据非常方便。

另外提供的批量接口,一定要限制请求的记录条数,如果请求的数据太多,很容易造成API接口超时等问题,让API接口变得不稳定。

六、统一返回值与统一封装异常

API网关捕获业务异常,然后转换成统一的异常结构返回,这样能统一返回值结构。

七、请求日志

最好有traceId,可以通过它串联整个请求的日志,过滤多余的日志。

八、幂等设计

支持在极短的时间内,第三方平台用相同的参数请求API接口多次,可能是bug或者接口重试,第一次请求数据库会新增数据,但第二次请求以后就不会新增数据,但也会返回成功。

高并发下可以通过乐观锁、加唯一索引等方法保证接口的幂等性。

高并发下如何保证接口的幂等性?

九、异步处理

一般的API接口的逻辑都是同步处理的,请求完之后立刻返回结果。对于非常复杂耗时的逻辑,则需要异步处理。

在API接口中可以发送一条mq消息,然后直接返回成功。之后,有个专门的mq消费者去异步消费该消息,做业务逻辑处理,如何通知调用方:

方法一:回调第三方平台的接口,告知API接口的处理结果,很多支付接口就是这么玩的。

方法二:第三方平台通过轮询调用我们另外一个查询状态的API接口,每隔一段时间查询一次状态,传入的参数是之前的那个API接口中的id集合。

十、数据脱敏

我们可以在返回的数据中,部分内容用星号代替。如:123****888

十一、压测

上线前我们对API接口做一下压力测试,知道各个接口的qps情况。

http://www.lryc.cn/news/483665.html

相关文章:

  • Font Awesome Web 应用图标
  • bridge-vlan
  • 【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
  • 华为云前台展示公网访问需要购买EIP,EIP流量走向
  • 排序算法 -插入排序
  • 如何使用.bat实现电脑自动重启?
  • 使用VSCode远程连接服务器并解决Neo4j无法登陆问题
  • 使用React和Vite构建一个AirBnb Experiences克隆网站
  • HBase压测 ycsb
  • 基于Python+Django+Vue3+MySQL实现的前后端分类的商场车辆管理系统
  • 网络安全web基础_HTML基础(扫盲篇)
  • (附项目源码)Java开发语言,监督管家APP的设计与实现 58,计算机毕设程序开发+文案(LW+PPT)
  • 前端基础的讲解-JS(11)
  • Python魔法方法深度解析:解密__call__、__new__和__del__的核心奥义
  • 当微软windows的记事本被AI加持
  • Python酷库之旅-第三方库Pandas(213)
  • 普林斯顿:LLM基于边际优化的梯度纠缠
  • 通俗易懂:什么是 Java 类加载?
  • Dijkstra 算法的实现方案
  • OpenGL 进阶系列07 - 阴影贴图(shadowmap )
  • 【CAN介绍】【第一篇章】
  • 【统计子矩阵——部分前缀和+双指针】
  • 用正则表达式检查是IP否为内网地址
  • Leetcode刷题笔记14
  • PHP图书绘本借阅管理系统小程序源码
  • 【JavaWeb】JavaWeb入门之XML详解
  • JS手写-this绑定实现
  • 【时间之外】IT人求职和创业应知【31】
  • 如何使用ffmpeg命令行进行录屏
  • ODOO学习笔记(8):模块化架构的优势