围绕外部 API 假设进行设计:来自免费汇率 API 的教训

发布: (2026年1月2日 GMT+8 09:01)
3 分钟阅读
原文: Dev.to

Source: Dev.to

封面图片:关于外部 API 假设的设计:来自免费汇率 API 的教训

项目概述

我开发并部署了一个名为 YenUp 的应用,它会比较今天的汇率与昨天的汇率,并根据结果发送通知。为了保持项目简洁且免费,我使用 Frankfurter API 作为数据源。

项目完成后我很高兴。但很快我注意到收到的通知有问题。

通知应该在今天的汇率优于昨天时才触发。为了端到端调试交付流水线,我添加了一个 notification=true 标记,即使汇率未变化也强制发送 Slack 消息。

我实际收到的通知如下:

Test Notification (forced). CAD/JPY: Yesterday 114.4300 -> Today 114.4300

起初,我怀疑是自己实现中的 bug。我检查了逻辑并再次核对了比较代码。最终,我意识到问题不在我的代码,而在我对 API 的假设上。

这种行为还被我的回退逻辑进一步放大。当特定日期的数据不可用(例如周末或每日更新之前),我的实现会回退到 latest 端点。于是,非工作日的汇率实际上会归并为同一个基础汇率。

我的收获

真正的问题不是 API 本身的行为,而是我对它的假设。我在设计逻辑时默认 “今天” 与 “昨天” 是日历天。然而,外部 API 常常根据自己的业务规则来定义这些概念,这些规则可能与产品使用数据的方式不一致。

接下来我会做什么

基于此,我正在考虑将比较逻辑改为使用 工作日 而不是日历天。由于在不同货币之间一致地定义工作日会增加额外的复杂性,这一点我还没有完全实现。

这个小 bug 让我重新审视了自己的假设,也改变了我对外部 API 与业务规则的思考方式。希望在后续项目中继续学习。

Back to Blog

相关文章

阅读更多 »

关于 REST API

Forem 动态 !Forem Logohttps://media2.dev.to/dynamic/image/width=65,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.co...