单页应用如何组织请求

发布于 2022-09-05 04:14:54 字数 430 浏览 20 评论 0

需求

正在开发一个电商web应用,前端采用的是React,Redux,由于采用前后端分离的方式,需要发起很多ajax/fecth请求

问题

  • 后端返回都会携带状态码,都需要进行判断,如何优雅有效的去处理这些请求?

  • 这些发送请求的代码如何组织便于维护

  • 每个请求还需要携带jwt验证字符串,这是保存在state里,而只有container组件才能访问state

我的理解

  • 如果把请求写在各自的组件里,自己进行判断处理,感觉产生很多重复的代码,例如各种状态码判断,各个组件都是独立的文件,对后期的修改请求域名等是否也会造成麻烦;

  • 把所有的请求都写在一个文件里然后在需要的组件里进行import

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

长梦不多时 2022-09-12 04:14:54

一般情况下我会把原始的 ajax 请求进行一次封装,对常见的一些错误在这里先处理了。因为没用过 Redux,所以我以 jQuery 为例:

class App {
    ajax(url, data, options) {
        const settings = $.extend({
            type: "post",
            dataType: "json"
        }, options);
        settings.data = $.extend(settings.data, data);

        // 准备返回新的 promise
        var deffered = $.Deferred();
        $.ajax(url, settings)
            .done(function(jo) {
                if (isCommonError(jo)) {
                    // 处理常规错误
                    deferred.reject({
                        type: "business error",
                        err: jo
                    });
                } else {
                    // 没有错误的情况
                    // 如果这里需要对正常返回的数据进行初步处理,也可以
                    // 可以 resolve(dealedJo)
                    deferred.resolve(jo);
                }
            })
            .fail(function(err) {
                // 处理 ajax 调用的异常,比如 500 啊,之类的
                deferred.reject({
                    type: "ajax error",
                    err: err
                });
            });

        return deffered.promise();
    }
}

const app = window.app = new App();
桜花祭 2022-09-12 04:14:54

自己封装基础的 request,里面挂上钩子,统一处理错误 / Token 等业务无关逻辑

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文