都可以写好后端接口

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

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文档 是很有必要的。

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

相关推荐
平凡但不平庸的码农几秒前
Go 语言基础语法
开发语言·后端·golang
是宇写的啊3 分钟前
SpringBoot 统一功能处理
java·spring boot·后端
等....4 分钟前
Spring Boot多模块项目部署
java·spring boot·后端
20岁30年经验的码农9 分钟前
Spring Boot 配置文件生效规则
spring boot·后端·pycharm
霸道流氓气质42 分钟前
SpringBoot+LangChain4j+Ollama+MCP实现智能天气工具调用示例
java·spring boot·后端
ErizJ1 小时前
Go|腾讯面经总结
开发语言·后端·golang
geovindu1 小时前
go: Registry Pattern
开发语言·后端·设计模式·golang·注册模式
Le_ee1 小时前
ctfweb:flask+ssti
后端·python·flask
木易 士心1 小时前
一文彻底搞懂 Elasticsearch:原理、场景、避坑与优化
大数据·后端·elasticsearch·搜索引擎
IT 行者1 小时前
Spring Boot 4.1.0-RC1 发布:核心新特性解析
java·spring boot·后端