【发布时间】:2017-07-22 05:23:43
【问题描述】:
我是 Elixir 的新手,并且通常是函数式编程,我正在寻找一些指导,以了解在我的 SDK 中构建数据合约的结构模型是否是“正确”的事情为 Xero API 构建。
SDK 的要点在于它公开了 Xero API 的端点以及对这些端点的操作,执行 OAuth1.0a 授权,然后向 API 发出 Web 请求。我的 SDK 应该返回给消费者什么?
我应该
- 只返回原始 HTTPoison 响应并留给消费者处理?
- 使用 Poison 将返回的 JSON 负载反序列化为映射并返回?
- 为每个数据合约创建结构并使用 Poison 将 JSON 字符串解码为这些结构?
在 Elixir/函数式编程中还有其他更正确的方法吗?
API 还支持 PUT/POST 操作,因此如果使用结构,可以将结构提供给这些操作并编码为 JSON 字符串。
API 中的数据合约非常复杂,有很多嵌套。 You can see an example of one in the documentation
【问题讨论】:
-
我看不出这个问题与语言范式有什么关系:无论是函数式、命令式、OO 还是尚未发明的。无论如何,您应该只根据您的理解或消费者的需求来生产一些东西。当您不了解消费者的需求时,最好尽可能保持通用(因此使用地图)。无论您是否希望您的消费者是基于 Elixir 的,并且您有机会与他们共享结构代码 - 使用结构,他们都将具有开箱即用的实例化。在此,我投票结束基于意见的问题。
-
因此,如果您在应用程序中的所有不同功能中传递大量信息,那么结构将是最佳解决方案。
标签: functional-programming elixir