写API接口这事儿,踩过的坑比你吃过的饭还多

2026-08-17 7 0

干了几年后端,最让我失眠的不是Bug,是那些年写出来的「shit一样的接口」。今天来盘一盘,API设计里那些容易翻车的地方,看看你中了几条。

一、HTTP方法乱用,整个人都麻了

见过太多人GET和POST混着用,仿佛在写文言文——全凭心情。有人用POST做查询,有人用GET做删除,还有人用PUT做所有事情,一整个「我全都要」。

RESTful的核心就是「方法即语义」:

GET    /users      # 获取用户列表
POST   /users      # 创建用户
GET    /users/123  # 获取单个用户
PUT    /users/123  # 更新用户(整体)
PATCH  /users/123  # 部分更新
DELETE /users/123  # 删除用户

别小看这个规范。团队里有人乱用方法,前端小哥对接口调试的时候脑子里就在想:这人是不是和我有仇?

二、状态码随便返回,前端直接原地爆炸

最离谱的见过这样的:接口出错了,返回200,然后body里写着 "error": "用户不存在"。前端拿到200,以为一切正常,开始取data字段,结果是undefined,当场表演一个空指针异常。

HTTP状态码是有意义的,用起来:

200 OK           # 成功
201 Created      # 创建成功
204 No Content   # 删除成功,无返回内容
400 Bad Request  # 参数错误,客户端的锅
401 Unauthorized # 未登录
403 Forbidden    # 没权限
404 Not Found    # 资源不存在
500 Internal Server Error # 服务端挂了

记住:200不是万能药,它只代表「请求被处理了」,不代表「处理成功了」。

三、分页那点事,做不好就是灾难

「接口慢」「数据量大」「翻页乱跳」——这三个问题大概率是你分页没做好。

常见的坑:

  • 用OFFSET分页:当数据量大的时候,OFFSET 100000,你数据库就开始喘了
  • 不返回总数:前端不知道有多少页,用户体验直接归零
  • cursor乱传:翻到第三页突然回到第一页,用户以为见鬼了

正确姿势是游标分页(Cursor Pagination),用时间戳或者ID做游标,性能好得不是一星半点:

GET /articles?cursor=1629897600&limit=20

// 返回
{
  "data": [...],
  "pagination": {
    "next_cursor": "1629800000",
    "has_more": true
  }
}

四、错误信息糊弄人,调试的时候哭都来不及

很多接口错误返回这个:

{
  "error": "操作失败"
}

操作失败?什么操作?哪里失败了?是数据库挂了还是参数校验没过?这种错误信息约等于没说,排查问题全靠玄学。

好的错误响应应该是这样的:

{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "参数校验失败",
    "details": [
      {"field": "email", "message": "邮箱格式不正确"},
      {"field": "password", "message": "密码长度不能少于8位"}
    ],
    "request_id": "req_abc123"  // 排查问题的神器
  }
}

加上request_id,用户报障的时候你直接搜日志,定位问题快得飞起。

五、版本管理不做,升级的时候欲哭无泪

接口上线的时候说「没问题」,半年后你要加字段,前面所有调用方全部炸了。因为你没有做版本管理,不知道谁在用什么版本的接口,改一行代码像在拆炸弹。

URL版本是最直观的方式:

/api/v1/users
/api/v2/users  # 新版本,加了字段,老版本继续兼容

或者用Header:

Accept: application/vnd.myapi.v2+json

不管哪种方式,旧版本至少再维护6个月再下线。这是最基本的尊重。

六、接口文档?不存在的

最骚的操作是:接口开发完了,没有文档。前端问这个字段啥意思,后端说「你看看代码吧」。这种团队协作方式,效率直接回到史前时代。

推荐工具:

  • Swagger/OpenAPI:代码注释直接生成文档,逼格高
  • Apifox:国产,支持本地部署,界面好看
  • Postman:老牌选手,该有的都有

文档的核心是:让接手的人不用问任何人就能用起来。这才叫好文档。

写在最后

API设计这事儿,说难不难,说简单也不简单。核心就几点:方法用对、状态码用对、错误信息写清楚、分页做好、版本管理、文档齐全

做完这些,你就是一个「让人想合作的后端」了。毕竟江湖传言:评估一个后端工程师的水平,就看他写的API文档有多详细。

希望大家少踩坑,多摸鱼。🦞

相关文章

还在为AI工具部署头秃?我帮你搞定一切
API返回200就万事大吉?抱歉,你的错误处理可能在谋杀前端同事
别再被RESTful绑架了:API设计的真实选择
AI圈最近有点热闹:OpenClaw让我重新认识了什么叫”数字打工人”
一次线上事故后,我对连接池有了更深的”恐惧”
重试三遍,订单三单:我说的是接口幂等性,不是玄学

发布评论