news 2026/10/3 12:32:14

后端接口设计规范,这10条建议请收好

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
后端接口设计规范,这10条建议请收好

1. 用名词复数命名资源,别用动词

URL应该指向资源,不是动作。GET /users比GET /getUserList干净得多。新增用POST /users,删除用DELETE /users/1,更新用PUT /users/1。动词留给HTTP方法,URL只负责定位。别在路径里出现add、delete、update这些词,那是RPC风格,不是REST。

2. 版本号放URL里,别藏Header

/api/v1/users比在Header里塞Accept: application/vnd.api+json;version=1.0直观一百倍。调试时一眼看出调的是哪个版本,日志里也清晰。版本升级时,v1和v2可以并行跑,老客户端不受影响。别怕URL变长,可读性比简洁重要。

3. HTTP方法要用对,别全用POST

GET查、POST增、PUT改、PATCH局部改、DELETE删。GET必须幂等且无副作用,别用GET做删除。PUT是全量替换,PATCH是局部更新。很多团队图省事全用POST,结果缓存没法用,语义一团糟。方法用对,接口自解释。

4. 状态码要精准,别全返回200

200成功,201创建成功,204删除成功无内容,400参数错误,401未认证,403无权限,404不存在,409冲突,500服务器错误。别把错误塞在200的body里,那会让监控和网关无法正确判断。状态码是第一层错误标识,body是第二层细节。

5. 统一响应结构,别今天一个样明天一个样

建议格式:{ "code": 0, "message": "success", "data": {...} }。code为0表示业务成功,非0表示业务错误。HTTP状态码管传输层,code管业务层。前端只需判断一次,不用每个接口写一套解析逻辑。分页数据放data.list和data.total,别一会儿叫items一会儿叫rows。

6. 错误信息要给人看,别甩堆栈

"message": "用户名已存在"比"message": "SQLIntegrityConstraintViolationException"有用得多。错误信息要能让前端直接弹给用户,也要能让开发快速定位。敏感信息如SQL、堆栈、内部IP,绝不能暴露给客户端。日志里记详细,响应里给摘要。

7. 分页、排序、过滤要标准化

分页统一用page和size,或者offset和limit,别这个接口用pageNum,那个用current。排序用sort=created_at,desc,过滤用status=active&type=premium。参数名统一,前端不用记两套。默认分页大小设个上限,防止有人传size=100000拖垮数据库。

8. 幂等性设计,别让重复请求出大事

POST创建订单,网络超时客户端重试,结果生成两笔订单。解决办法:客户端传唯一请求ID,服务端用Redis或数据库唯一索引去重。PUT和DELETE天然幂等,POST必须加防重。支付、下单、扣库存,这些接口不做幂等,迟早出事故。

9. 安全鉴权别偷懒,Token放Header

用Authorization: Bearer <token>,别把token放URL参数里,那会留在日志和浏览器历史里。HTTPS必须上,敏感字段加密传输。接口限流防刷,关键操作加验证码。权限校验在网关或拦截器统一做,别每个接口写一遍。

10. 文档和契约要同步更新

用Swagger或OpenAPI自动生成文档,代码改了文档跟着变。接口定义就是契约,前端按契约写,后端按契约实现。字段类型、是否必填、示例值,写清楚。别让前端靠猜,猜错了联调时互相甩锅。契约先行,并行开发,效率翻倍。

接口设计没有银弹,但这10条能帮你避开八成坑。规矩定好,团队照做,联调时间砍半,线上故障少一半。别等到系统烂了才想起规范,那时候改的成本,够你重写三遍。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 12:31:59

Threadripper PRO 7975WX 默频 CPU-Z 跑分与复测指南

这次我们来看一颗工作站级别的 32 核处理器&#xff1a;AMD Ryzen Threadripper PRO 7975WX。感谢粉丝 "Val-halla" 提供的实测视频&#xff0c;这颗 U 在完全默认频率的状态下跑完了 CPU-Z 基准测试&#xff0c;单核与多核得分都记录得很完整。这篇文章就以这份测试…

作者头像 李华
网站建设 2026/10/3 12:30:49

DRV8818+PIC24双极步进电机驱动板设计实战:接线、固件与调参

这两年做小型工业机械臂和自动化设备&#xff0c;步进电机的控制板试了不少方案。早期图省事直接买现成的A4988模块&#xff0c;调试确实快&#xff0c;但一到产线连续运转&#xff0c;散热和稳定性就开始拖后腿。后来干脆自己设计驱动板&#xff0c;核心组合就是TI的DRV8818PW…

作者头像 李华
网站建设 2026/10/3 12:29:45

TM4C129+DRV8818步进电机外部轴方案:硬件设计与运动控制实践

前阵子给一条非标产线做外部行走轴&#xff0c;负载不大、行程不长&#xff0c;但客户要求既能本地手动操作&#xff0c;又可以被主控远程调用。我绕了一圈回到一个很经典的组合&#xff1a;TM4C129ENCPDT 做主控&#xff0c;DRV8818PWPR 做双极步进电机的功率驱动。这两个器件…

作者头像 李华
网站建设 2026/10/3 12:28:27

Java面试:这5道场景题答不上来直接凉

面试官抛出“线上CPU飙到90%怎么办”&#xff0c;很多人第一反应是“重启”。这个答案在面试官眼里等于交白卷。场景题考的不是你知道多少命令&#xff0c;而是你有没有一套排查问题的思维框架。下面这五道题&#xff0c;答不上来基本就凉了。线上CPU飙高&#xff0c;你怎么定位…

作者头像 李华
网站建设 2026/10/3 12:26:05

ESP32蓝牙控制舵机零基础实战:从接线到手机控全攻略

我一开始玩 ESP32 就是冲着“手机控制舵机”这个目标去的&#xff0c;纯粹是觉得好玩&#xff1a;掏出手机&#xff0c;点一下&#xff0c;舵机就动&#xff0c;有种“万物皆可遥控”的成就感。但真上手之后才发现&#xff0c;网上资料虽然多&#xff0c;却特别零散——有人用网…

作者头像 李华