reactjs - 目前对于哪种 api 设计适合 React/Redux 应用程序达成共识吗?

标签 reactjs odata redux api-design json-api

我正在使用 React 和 Redux 构建一个单页应用程序。当然,这需要一个数据后端。现在我们正在研究哪种 api 架构最好,但我无法就哪种 api 架构最适合 React/redux 应用程序达成共识。

现在我知道您基本上可以以任何您喜欢的方式使用数据。但仍然有明显的市场领导者,例如 mobx 上的 redux。这并不会让它们变得更好,但至少知道偏好在哪里是件好事。

所以我的问题是:目前 React/Redux 应用程序最常使用哪种 api 架构?

最佳答案

根据我们的经验,最好不要让 API “适合”react/redux,反之亦然。 只需使用 thunk-action-creators 并以任何形状或形式处理 API 调用。

这是一个人为的示例:

export function getUserById (userId) {
    return async dispatch => {
        dispatch({ type: 'REQUEST_USER_BY_ID', payload: userId })
        try {
            const user = await api.get(`/users/${userId}`)
            ga('send', 'event', 'user', 'profile', 'view')

            dispatch({
                type: 'LOAD_USER',
                payload: user
            })

            dispatch({
                type: 'NOTIFY_SUCCESS',
                payload: `Loaded ${user.firstname} ${user.lastname}!`
            })
        }
        catch (err) {
            dispatch({
                type: 'NOTIFY_ERROR',
                payload: `Failed to load user: ${err.message}`,
            })
        }
    }
}

这种方法的最大好处是灵活性。 API 对消费者完全不抱任何意见。 您可以在任何页面上以不同的方式处理错误、添加重试逻辑、回退逻辑。 轻松将需要并行或顺序调用多个不同 API 的操作粘合在一起。

我们尝试了许多方法,例如“redux over the Wire”和relays/apollos“将组件绑定(bind)到查询”。 这个被认为是最灵活、最容易理解和重构的。

关于reactjs - 目前对于哪种 api 设计适合 React/Redux 应用程序达成共识吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39740883/

相关文章:

reactjs - 在React表单中,为什么我们在输入标签中设置(例如)value={this.state.task}?

javascript - Redux - combineReducers 如何知道将应用状态的哪个子集传递给 reducer

javascript - 如何在redux中修改对象属性?

redux - 如何实现 Redux + 微服务互通

javascript - 如何处理 "polymorphic"函数组件

javascript - 在 React 组件中等待异步函数并显示 Spinner

c# - 使用 OData 是个好主意吗?

asp.net-web-api - 使用 webapi odata 而不使用 ODataConventionModelBuilder

jasmine - 助焊剂商店 - 单元测试

web-services - 通过@OData.publish发布的CDS在/IWFND/MAINT_SERVICE中不可见