应用 API 响应转换的最佳位置

Best place to apply API response transformation

本文关键字:最佳位置 转换 响应 API 应用      更新时间:2023-09-26

在异步操作创建器中,我从服务器获取数据。对于我的用例,数据的格式不是很好,我需要转换它才能在 UI 中使用它。

问题 : 我应该

    在数据到达后立即转换
  1. 数据,然后再使用转换后的数据调度成功操作?

    fetch("some/url")
    .then(res => dispatch(successActionCreator(transform(res)))
    
  2. 使用原始数据调度成功操作并将其存储为,并将其转换为mapStateToProps

  3. 使用原始数据调度成功操作并将其转换为化简器?

1.中,数据将在我需要时进行转换,在我看来,它将 API 数据格式和我的 Redux 存储分离。但转换逻辑在数据获取操作中。

2.中,异步操作创建者保持简单,完全没有逻辑,映射发生在 UI 层。但这意味着我需要通过重新选择之类的东西来优化它,因为每次渲染都会调用mapStateToProps

3.中,异步操作创建者保持简单,根本没有逻辑,但操作与 API 数据格式耦合。

我要去 1.(无论如何都要对转换进行单元测试),但我并不完全满意。有什么建议吗?谢谢!

-- 编辑 :由于这个问题有一个固执己见的答案,我在这里有点回答我自己。我会选择1.,出于评论和答案之一中所述的所有原因。

选项 1 是正确的答案。

如果传递原始服务器响应,则会将客户端耦合到服务器端实现。隔离这些类型的转换对于应用程序的未来可维护性非常重要。