如何拦截ajax调用以返回模拟数据。

时间:2015-02-28 16:17:58

标签: javascript ajax

在我之前的angularjs项目中,我使用拦截器来拦截http调用,并且能够提供模拟数据而不是来自服务器的真实数据。我发现它在整个开发过程中非常有用。

我的问题是,如果没有angularjs我怎么能这样做(在我目前的项目中,我使用另一个没有拦截器的框架)? 有没有其他的http库,支持这个?我怎么能使用jquery或superagent的http功能来实现这个目标?

2 个答案:

答案 0 :(得分:2)

所以我找到了以下脚本:https://github.com/creotiv/AJAX-calls-intercepter/blob/master/index.html

这是一个活泼的小提琴:http://jsfiddle.net/0eyadb88/1/

我不会在脚本中查看所有内容,因为它看起来像我所评论的那样处理XMLHttpRequest。这在多大程度上起作用,当然只是一些测试,应该能够扩展。

我已经添加了一个非jquery ajax调用(在这里使用chrome进行测试),它也可以处理它。

要注意的主要部分是

(function (open) {
    XMLHttpRequest.prototype.open = function (method, url, async, user, pass) {
        alert('Intercept');
        open.call(this, method, url + ".ua", async, user, pass);
    };
})(XMLHttpRequest.prototype.open);

我个人会使用这种方法,除非有一个体面的图书馆,但当然如果存在这样的图书馆。请告诉我们;)

否则清理脚本或使用该脚本应该相当容易。

答案 1 :(得分:0)

你应该看看dfournier/plasticine。我开发了这个库,以拦截请求并伪造响应或拦截服务器响应并对其进行修改。我在工作中使用它,后端团队还没准备好,但我们已经定义了API。