在Elixir中,我应该使用结构来为我正在为API构建的SDK中的数据协定建模吗?

时间:2017-07-20 01:58:36

标签: functional-programming elixir

我是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

This is the SDK repo for anyone interested

1 个答案:

答案 0 :(得分:0)

如果您询问是否应在将请求有效负载转换为Structs后立即将其转换为Structs,则答案为是。结构是下面的裸映射,但它们仅使用:atoms作为键,这意味着它们可以更快地获取。

对于可能在以后维护代码的其他程序员来说,也更容易阅读。我还建议阅读this article.