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