首页 > 其他分享 >如何设计优雅的API接口

如何设计优雅的API接口

时间:2022-12-16 16:36:33浏览次数:70  
标签:请求 校验 接口 优雅 API 参数 白名单

前后端分离开发模式下,后端工作的对外表现就是一系列的API接口。如何设计一个优雅的API接口,以满足规范性、安全性、稳定性、易排查等需求?

几年工作下来也有了一些心得,但考虑仍不够全面,网上学习了下整体总结如下。

有【定义符合Restful规范、参数校验、统一返回值、敏感数据加密或脱敏、幂等执行、分页限制条数、异步处理】、【IP白名单、限流、签名鉴权】、【记录请求日志、压测、接口文档】等

 

接口实现

接口定义:遵循Restful规范,包括URL命名、HTTP请求类型等。关于Restful规范,可参阅 https://www.cnblogs.com/z-sm/p/5253254.html

参数校验:提前做参数校验以尽早终止无效请求到数据库,如非空校验、数值范围校验等。Java中借助hiberate的Validator框架。

统一返回值:定义统一的数据格式(code、msg、data),返回给调用者的数据都用该格式。包括正常返回和异常返回两情况,前者要么每个方法返回值声明为该格式要么全局拦截进行统一封装、后者通过异常全局拦截进行封装。从实现上来说,包括【API故障码定义、API异常定义、普通/分页数据格式定义】、【正常返回、异常返回】的全局拦截和数据格式封装。若异常不进行拦截封装则可能把数据库访问等错误信息直接抛给调用者显然这不安全。

接口安全性

数据传输的安全性:传递的敏感数据要加密或转码,如如银行卡号用base64转码;返回的展示数据做脱敏处理,如电话号码中间用星号。

接口执行的安全性:

幂等执行:因网络异常等原因调用方可能会用相同的参数进行重复调用,服务端不能产生重复数据。

接口调用的安全性

IP白名单:配置IP白名单来加强接口安全性,防止签名或加密被暴力尝试破解,例如在网关层校验请求IP或域名白名单是否在白名单内。

限流:接口自身加上限流配置,防止高并发场景下接口因请求量太大不可用。

签名鉴权:开放给第三方使用的接口,要考虑接口签名方案。通常把当前时间戳也作为一个请求参数,然后用秘钥对所有请求参数计算签名值sign也作为一个参数传给后台,后台用秘钥计算sign比较是否一样。时间戳用于为请求设置有效期;秘钥的一种方案是事先商量一个privateKey,另一更常用的方案是第三方来申请ak/sk 且ak作为请求参数sk用于计算sign。

接口速度优化:

分页限制记录条数:以免数据量太大造成接口超时等问题。

异步处理:业务逻辑比较复杂的接口可用异步处理来提高响应速度,例如支付、转账。通常是借助消息队列,API接口把消息发队列后就返回、由专门的消费者去处理、前端之后轮询调其他接口看处理完毕否。

接口监控:

请求日志:记录下请求的url、parameter、header、method、响应时间等到日志文件,并收集到实时日志分析平台ELK(ElasticSearch, Logstash, Kibana),以方便问题分析和定位。

接口测试:

压测:测试阶段对接口进行压测得到各接口qps,可用jmeter、apache benc等工具。

接口对接:

接口文档:选用swagger等工具,以代码最小侵入代价来自动生成接口文档,提高对接沟通效率。

 

 

参考资料:https://mp.weixin.qq.com/s/1WSvwtIxGHfdg-qlvSo__w

 

标签:请求,校验,接口,优雅,API,参数,白名单
From: https://www.cnblogs.com/z-sm/p/16987526.html

相关文章

  • 京东支付接口
    官方文档:http://payapi.jd.com/docList.html?methodName=0#一、本地测试(用官方自带参数测试)1、下载官方接口文件:京东支付PC&H5接口文档>>京东支付2.0-PHP2、测试,把“京......
  • 如何在SpringBoot中优雅地重试调用第三方API?
    前言作为后端程序员,我们的日常工作就是调用一些第三方服务,将数据存入数据库,返回信息给前端。但你不能保证所有的事情一直都很顺利。像有些第三方API,偶尔会出现超时。此时,......
  • BIO和NIO的基本用法和API讲解
    1BIO可以理解为BlockingIO是同步阻塞的IO,也就是说,当有多个请求过来的时候,请求会呈现为链状结构,遵循先进先出的原则 1.1单线程版本1.1.1服务端//服务端单......
  • 浙大团队利用机器人导航系统提高脑机接口植入手术成功率
    与非植入式脑机接口(BCI)相比,植入式BCI可通过微电极的细胞外记录检测单个神经元的信号,植入的微电极越多,采集到的神经元就信号就越多,对应的空间和时间分辨率就越高,能够实现精确......
  • 七个步骤覆盖 API 接口测试
    接口测试作为最常用的集成测试方法的一部分,通过直接调用被测试的接口来确定系统在功能性、可靠性、安全性和性能方面是否能达到预期,有些情况是功能测试无法覆盖的,所以接口......
  • 机械硬盘,IDE接口相关
    cyls:柱面        head:磁头         sector:扇区当有两个主分区时,第二个主分区是Patition2老式电脑一个IDE通道接两个设备,不能都设成Cable......
  • gdb mi接口命令入门大全
    入门的话,先看看我这两个博客​​gdb调试常用概念整理_标biao的博客​​关于调试器和IDE的一些认识_标biao的博客gdbmi简介gdbmi接口协议有3个版本 ​​GDB/MIDevelopmen......
  • 别再背锅了!这个小技巧统计第三方接口耗时很安逸
    前言之前我有写过一篇记录生产环境事故的文章,获得了不少好评。后续,我们团队有做过一些讨论,为了支撑运营维护,搭建了更好的日志平台Granfa+Loki,也引入了SkyWalking做链路......
  • 免费天气API,天气JSON API,天气插件
    免费天气API,天气JSONAPIAPI地址:​​免费天气API,天气JSONAPI,不限次数获取十五天的天气预报—技术博客​​第一步:城市信息请在百度网盘下载:链接: ​​https://pan.baidu.c......
  • 首开先河 | 脑机接口让这位ALS患者可读可写
    今年夏天,罗伯特·捷克(RobertCzech)成为了世界上第一个获得脑机接口的完全瘫痪的人,也是第一个带着脑机接口(BCI)回家的美国人。罗伯特·捷克(RobertCzech)在家中。自从......