我正在寻找一种在大型应用程序中的ajax请求期间使用获取api处理标头和处理响应的方法

时间:2018-07-19 14:34:32

标签: angularjs fetch-api

我目前使用AngularJS编写了一个相对较大的Web应用程序,并且我正在评估解决方案,以便使用其他框架进行重写。我之所以只提到AngularJS,是因为在其中,我们对所有ajax请求都使用$ http,这使得放置拦截器来定义我们在整个应用中使用的行为非常方便。

特别是,一旦用户登录,我们的拦截器将处理添加用于身份验证的请求标头,并且由于我们所有的响应都具有相同的形状,因此当响应返回时,我们还具有一些相对健壮的错误处理。

使用我们的拦截器,我们无需显式添加任何身份验证信息,而无需用户提供其作为初始登录凭据的身份验证信息。

关于错误处理,我们有一些默认的选项,但是当我们发出请求时这些选项可以被覆盖,因此我们仍然可以完全控制如何处理,但是在90%的时间里,只需专注于特定端点所需的详细信息进行呼叫即可。

我想使用访存API进行类似的操作。不过,我是新手,因此在确定解决方案之前,我需要一些反馈和建议。

我知道您可以将一组选项传递给调用以执行添加标头之类的操作,但是这是一种透明地执行我在AngularJS中使用拦截器所做的事情的方法吗?

我的本​​能是将fetch重命名为其他名称,并通过在其周围包裹我的逻辑来重新定义它,例如在我的应用范围之内(关闭):

const realFetch = fetch;
fetch = (input, init) => {
    let manipulations = manipulate({
        input,
        init,
        responseHandlers: []
    });
    let promise = realFetch(manipulations.input, manipulations.init);
    for (const handler of manipulations.responseHandlers) {
        promise = promise.then(handler);
    }
    return promise;
}

manipulate(...)将决定是否需要操纵并返回操纵所需的操纵输入,init和responseHandlers。

这似乎是一种合理的方法吗?有没有人有更好,更清洁的方式来做类似的事情?

谢谢!

0 个答案:

没有答案