都可以写好后端接口

2 篇文章 0 订阅
2 篇文章 0 订阅

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

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文档 是很有必要的。
其中包括提供一些请求示例,这样用户在使用的时候才会更加清楚,也能避免一些错误的请求。

  • 15
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值