码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
接口设计规范
基本原则
单一职责:
一个接口只做一个行为,避免大而全的接口,避免出现根据入参控制接口行为的情况,这种情况需要拆分为多个接口,实现内部可以再进行抽象封装
性能:
基于性能考虑,可以基于业务场景封装多个原子接口
,
例如上层需要获取3个以上的接口进行组装数据,可以提供一个封装后的接口,减少性能损耗
事务统一:
一个事务内的操作在一个接口内,尽量不要使用分布式事务
通用性:
接口要具有一定的通用性,避免频繁的修改
命名和注释规范
接口命名要具有明确业务含义
清晰易懂,避免无意义的英文缩写和拼音
接口的javadoc上必须添加注释
基本命名规范:动作+业务含义
create-新增
add-添加
remove-移除
modify-修改
query-查询单个接口
queryxxxList-查询列表
queryxxxPage-分页查询
参数规范
入参使用封装类,不要直接使用基本类型,避免接口后续扩展报错
入参不能使用java基础类型,必须使用包装类型,避免接口升级报错
入参的参数校验通过javax.validation注解实现
出参统一使用ResultDTO,包含code、message和data
出参不能直接返回领域对象,必须定义DTO进行返回,避免后续领域对象变更影响接口
异常规范
接口异常统一拦截返回ResultDTO,避免抛出异常
异常内容必须包含明确的errorCode和errorMsg
异常详细信息返回给客户端
日志规范
对外暴露的接口必须记录请求日志
异常请求必须打印日志
日志包含完整的请求参数、时间、异常详细信息
版本控制
接口升级和修改,需要兼容老版本
老版本接口标识为@Deprecated,在下次变更时及时删除无用接口
稳定性控制
接口需要自我保护,通过限流和熔断避免系统压力较大造成服务报错
幂等设计,对于写接口需要考虑幂等,避免重复数据写入
批量接口设计
提供的批量接口需要评估应用性能,设置合理的最大限制,或者内部拆分为小批量数据处理
在接口注释中说明接口耗时情况,避免客户端耗时设置较短报错
设置合理的限流阈值,避免应用崩溃
相关阅读:
【自用】VUE 获取登录用户名 显示在其他页面上
EPLAN-P8软件技术分享文章
矩阵的初等变换与线性方程组【线性代数系列(三)】
echarts 实现双Y轴刻度对齐
基于动态规划法的水力发电优化调度(Python代码实现)
动态规划:两个数组的dp问题(C++)
中国住宅设施杂志中国住宅设施杂志社中国住宅设施编辑部2022年第9期目录
倪师哲学。把智慧和时间都用在学习知识上
聚苯硫醚离子液体|苯硼酸离子液体|聚缩醛离子液体|透明质酸离子液体
Redis的监控与调优:工具使用和性能提升技巧
原文地址:https://blog.csdn.net/qq_30757161/article/details/132892587
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号