我目前使用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。
这似乎是一种合理的方法吗?有没有人有更好,更清洁的方式来做类似的事情?
谢谢!