让我流失用户的 5 个 REST API 错误

三年前,我构建了我的第一个公开 API。我以为一个周末就能搞定。我等着用户到来。

他们来了。然后又离开了。

产品没问题。API 很难用。我犯了五个重大错误。以下是我修复它们的方法。

1. 使用 200 OK 表示错误

即使在请求失败时,我也发送 200 OK 状态码。我把错误信息放在 JSON 体中。这迫使开发者必须为每一次调用编写自定义逻辑。

修复方法:使用正确的 HTTP 状态码。

  • 输入错误使用 400。
  • 身份验证失败使用 401。
  • 资源缺失使用 404。
  • 触发频率限制使用 429。

2. 忘记版本控制

我在没有预警的情况下更改了数据字段。一次改动就破坏了我所有的集成。

修复方法:在路由前加上 /v1/ 前缀。 这可以防止在更新代码时破坏现有的客户端。请保留当前版本和上一个版本。

3. 没有频率限制

一个有 Bug 的脚本每秒请求我的搜索端点 200 次。它耗尽了我的数据库资源,导致其他所有人的系统都崩溃了。

修复方法:实现频率限制。 使用令牌桶(token-bucket)算法。返回 429 Too Many Requests 状态码,并附带 Retry-After 请求头。

4. 错误格式不一致

我的错误信息看起来各不相同,取决于错误发生的位置。一个错误使用 "msg",而另一个使用 "message"。开发者不得不为同一个 API 编写多个解析器。

修复方法:选定一种错误结构并贯穿始终。 每个错误都应该拥有相同的键(keys)。

5. 返回数据过多

我的 /users 端点返回了数据库中的每一个用户。当我们达到 10,000 个用户时,响应体的大小导致移动端应用崩溃。

修复方法:使用基于游标(cursor-based)的分页。 这能保持响应体小巧且稳定。对于大数据集,它比基于偏移量(offset-based)的分页更快。

结果:

  • 集成时间从 3 天降至 4 小时。
  • 技术支持工单减少了 70%。
  • 以前的用户回来了。

你的 API 就是你的产品。优秀的的前端无法拯救一个糟糕的 API。

你见过最糟糕的 API 错误是什么?在评论区告诉我吧。

Source: https://dev.to/sirmax/5-rest-api-mistakes-that-cost-me-users-and-how-to-fix-them-57gi