当前位置: 首页 > 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.mrgr.cn/news/71227.html

相关文章:

  • GPT Notes 3.2.1.2 | 最强GPT解锁会员版无需登录无限制使用
  • springboot 集成javaFx 两个面板之间如何进行跳转
  • 深入解析 ZooKeeper:分布式协调服务的原理与应用
  • 昵称 校验
  • Oracle重启后业务连接大量library cache lock
  • SpringBoot + 事务钩子函数
  • 【MATLAB源码-第291期】基于matlab的AMI编码解码系统仿真,输出各个节点波形。
  • 2024 同一个网段,反弹shell四种方法【linux版本】bash、python、nc、villian反弹shell图解步骤
  • 【机器学习】K近邻算法
  • 7天用Go从零实现分布式缓存GeeCache(学习)(3)
  • CTF-RE 从0到N: windows反调试-获取Process Environment Block(PEB)信息来检测调试
  • Go开发指南-Gin与Web开发
  • android studio 配置过程
  • 开启鸿蒙开发之旅:核心组件及其各项属性介绍——布局容器组件2
  • Mysql高可用架构方案
  • 如何在60分钟内进行ASO竞争对手分析(App Store 和 Google Play Store)
  • seatunnel常用集群操作命令
  • 鸿蒙系统(HarmonyOS)与OpenHarmony
  • notepad++下载安装教程
  • 全球碳循环数据集(2000-2023)包括总初级生产力、生态系统净碳交换和生态系统呼吸变量
  • upload-labs通关练习---更新到15关
  • 【Conda】Windows下conda的安装并在终端运行
  • 第三百二十节 Java线程教程 - Java线程中断、Java Volatile变量
  • 3349、检测相邻递增子数组 Ⅰ
  • golang如何实现sse
  • 一文熟悉redis安装和字符串基本操作