【发布时间】:2015-10-11 13:49:47
【问题描述】:
我正在为我的 React/Redux 应用程序构建我的 api 服务器,我需要来自服务器的一些平坦响应来管理和减少我的状态。
例如,当我收到此响应时:
[{
id: 1,
title: 'Some Article',
author: {
id: 1,
name: 'Dan'
}
}, {
id: 2,
title: 'Other Article',
author: {
id: 1,
name: 'Dan'
}
}]
我怎样才能让它看起来像:
{
result: [1, 2],
entities: {
articles: {
1: {
id: 1,
title: 'Some Article',
author: 1
},
2: {
id: 2,
title: 'Other Article',
author: 1
}
},
users: {
1: {
id: 1,
name: 'Dan'
}
}
}
}
最好的功能是每个键是文章/用户 ID,因此我可以轻松地从响应中获取它并将其合并到我的前端应用程序中。
【问题讨论】:
-
为什么不使用JSONAPI?已有 AMS 适配器。
-
@max,因为它没有得到我平淡的回应;响应将比现在更嵌套。在我的 react/redux 应用程序中,我应该将响应中的一些数据与我已经拥有的一些状态合并,而不是标准化它很难做到。
-
我假设您已经看过 Normalizr 库:github.com/gaearon/normalizr,它旨在完全解决这个问题 - 甚至看起来这就是您获得所需输出示例的地方
-
@Joshua,是的,我见过。但我希望我的 rails-app 以这样的格式向我发送回复。有人知道如何使用 AMS 或任何其他类型的序列化程序来做到这一点吗?
标签: ruby-on-rails api active-model-serializers rails-api flat