我有一个关于如何最好地处理从我的 phoenix 应用程序架构中的第三方 API 获取数据的问题。本质上,我有一个 Controller ,它接收客户端的 IP 地址作为参数。然后,我需要从外部 API 获取与该 IP 地址关联的地理位置并将两者存储在数据库中(即, ip
和 geolocation
)。
现在我的方法是使用插头,然后在连接结构中返回结果。
但是我也可以通过直接在模型中创建一个函数来获取数据,然后在变更集操作期间调用它。
或者也许还有另一种选择,例如将其设为 OTP 应用程序。
在这里寻找一些关于最佳方法的指导,或者至少是一种与另一种的权衡。
虽然我的场景是具体的,但这可能是人们遇到的常见设计问题。
最佳答案
我可以告诉你我是如何处理一个有点类似的问题的。我的应用程序是一个用于发送 SMS 文本的网络应用程序(我使用 Twilio 作为我的 API)。
当用户提交他们的消息(to_phone_number、body_text 等)时,我将其保存到数据库中而不做任何额外的工作。我给它一个单独的状态“排队”。
然后,我在循环中有一个 GenServer,它接收状态 == 排队的所有消息并执行 API 调用。在事务中,它将状态更改为“已交付”,并且用户可以在 UI 中看到该状态。
如果您的用户希望地理定位数据与他们的响应一起显示在屏幕上,这将不会是一种有用的方法。无论如何,这是我为我的用例采取的方法......
关于api - 从 Phoenix 应用程序架构中的第三方 API 服务获取数据的最佳位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45290883/