都可以写好后端接口

在后端工程师的日常开发中,我们都曾想过 怎么设计一个良好的接口呢?需要考虑的点有哪些。来 给您。

1、请求参数校验

这个是大家都能想到的,也是一个良好的接口必备的前提条件,通过入参的校验我们可以过滤掉许多无效的请求,提高系统的稳定性。

我们可以将入参合法性校验分为: 「常规性校验」「业务校验」;

所谓的常规性校验包括:token校验、必填校验、长度校验、类型校验等等;

业务校验也就是特定业务场景下的校验:比如用户商品下单接口,那么下单金额一定要大于0;

2、版本迭代

实际过程中 肯定有需要对版本进行升级的需求,而提前设计好版本,可以避免因为升级导致旧的服务无法正常工作,我们要保证在升级的时候,新旧版本的服务都能正常运转。

多版本控制现在比较常见的方式有:url标识版本, header标识版本, params标识版本3种方式。

3、访问限制

在设计接口的时候,我们要考虑好,哪些是 游客接口,哪些是 登录接口。

在访问 登录接口的时候,我们要做好 验证工作。

比如说 请求头带上这个token请求接口,后端通过拦截器拦截该接口,做校验看redis是否存在该key,如果不存在直接返回,用户未登陆!

4、防抖处理

目的是防止重复数据的产生,比如新增接口,用户快速点击两次,如果没做防重,就会产生重复数据。

5、考虑幂等性

所谓幂等: 「多次调用方法或者接口不会改变业务状态,可以保证重复调用的结果和单次调用的结果一致」

我们在开发中主要操作也就是CURD,其中读取操作和删除操作是天然幂等的,我们所关心的就是创建操作、更新操作。

比如请求多次,只有第一次请求才会做数据处理,后面的请求不会产生数据改变,例如退款接口,第一次退款成功后,后面的请求,不会再次退款成功。

6、提高响应时间

这是一个 用户体验 的指标,因为涉及的方面很多,所以是一个复杂的操作。

7、限流控制

限流是为了更好的维护 系统稳定性。

如果说我们把接口提供出来给第三方系统用,那么这个时候接口的限流是非常有必要的。

一方面,限流可以防止接口被刷,造成不必要的服务层压力,另一方面,是为了防止接口被滥用。

可以使用 redis进行接口调用次数统计,ip+接口地址作为key,访问次数作为value,每次请求value+1,设置过期时长来限制接口的调用频率。

8、IP黑名单

ip黑名单是 设置不让访问服务的ip,进而对 恶意访问 做一个控制。

9、数据脱敏

数据库中的一些敏感字段比如:身份证号银行卡号地址手机号等等,是需要做脱敏处理。

比如手机号15912345678脱敏后显示159****5678。

10、接口访问日志

关键的 接口一定要有日志,入参日志出参日志异常日志

这样一旦出现问题,我们可以通过查看日志一下子定位问题所在。

11、统一 响应格式

在定义接口时需要返回 统一格式的 响应体。

响应数据会包含三个属性: `

  • 状态码(code)
  • 信息描述(message)
  • 响应数据(data)

客户端可以根据**「状态码」**知道接口请求是否成功,如果成功则开始处理数据,如果失败则直接抛出message信息。

12、职责单一清晰

一个接口只做一件事,是那些开发过大项目的小窍诀。

13、配备一份好的 接口文档

优秀的产品,需要一份优秀的说明书。提供一份良好完整的api文档 是很有必要的。

其中包括提供一些请求示例,这样用户在使用的时候才会更加清楚,也能避免一些错误的请求。

相关推荐
努力的小郑1 小时前
MySQL索引(三):字符串索引优化之前缀索引
后端·mysql·性能优化
IT_陈寒1 小时前
🔥3分钟掌握JavaScript性能优化:从V8引擎原理到5个实战提速技巧
前端·人工智能·后端
程序员清风2 小时前
贝壳一面:年轻代回收频率太高,如何定位?
java·后端·面试
考虑考虑2 小时前
Java实现字节转bcd编码
java·后端·java ee
AAA修煤气灶刘哥2 小时前
ES 聚合爽到飞起!从分桶到 Java 实操,再也不用翻烂文档
后端·elasticsearch·面试
爱读源码的大都督3 小时前
Java已死?别慌,看我如何用Java手写一个Qwen Code Agent,拯救Java
java·人工智能·后端
星辰大海的精灵3 小时前
SpringBoot与Quartz整合,实现订单自动取消功能
java·后端·算法
天天摸鱼的java工程师3 小时前
RestTemplate 如何优化连接池?—— 八年 Java 开发的踩坑与优化指南
java·后端
一乐小哥3 小时前
一口气同步10年豆瓣记录———豆瓣书影音同步 Notion分享 🚀
后端·python
LSTM973 小时前
如何使用C#实现Excel和CSV互转:基于Spire.XLS for .NET的专业指南
后端