13

如何实现模拟后端以使用 AngularJS 进行快速原型设计?

我需要能够伪造响应延迟、响应数据等。

我使用 $http 服务。

4

5 回答 5

12

您可以使用角度模拟来提供模拟后端。

在plnkr上工作演示。

基本上,您在 angular 之后包含 angular-mocks,并使用此 gist中提供的代码 ,您将能够控制请求和响应,包括标头和假响应延迟等。

例子:

    //When backend receives a request to the views folder, pass it through
    $httpBackend.whenGET( RegExp( regEsc( Config.view_dir ) ) ).passThrough(); 

    //Message should return a list og messages
    $httpBackend.whenGET(APIBase + 'messages').respond(function(method, url, data, headers) {
        return [200, messages.data, {/*headers*/}];
    });

    $httpBackend.whenPOST(APIBase + 'messages').respond(function(method, url, data, headers) {
        var message = angular.fromJson(data);

        messages.data.push(message);
        //You should consider having the back-end being responsible for creating new id tho!
        messages.index[message.id] = message; 

        return [200, message, {/*headers*/}];
    });

    //Message/id should return a message
    $httpBackend.whenGET( RegExp(regEsc(APIBase + 'messages') + '\d+$') ).respond(function(method, url, data, headers) {
        var id = url.match(/\d+$/)[0];
        return [200, messages.index[id] || null, {/*headers*/}];
    });

```

您还可以设置应该传递到实际服务器的 url(检查passThrough()

于 2013-12-03T12:03:41.440 回答
1

这些天我做的是通过 apiary.io,它是免费的。您可以将 API 端点编写为蓝图,然后像请求 REST 服务器一样请求它们。您还可以编写任何您想提供的响应。当 REST 服务器尚未准备好但您的前端已准备好时很有用。

于 2013-12-03T12:51:49.440 回答
1

您可以使用$httpBackend

这是来自 AngularJS 网站的示例:

phones = [{name: 'phone1'}, {name: 'phone2'}];


// returns the current list of phones
$httpBackend.whenGET('/phones').respond(phones);
于 2013-12-03T13:21:40.597 回答
1

只是为了添加这些答案:看看https://github.com/mdasberg/ng-apimock

https://www.npmjs.com/package/open-api-test-generator

ng-apimock 是量角器和开发的场景切换器,open-api-test-generator 可以为这个工具生成模拟。一旦你了解了这些模块,这些东西就很方便了

于 2016-11-15T10:39:01.710 回答
0

对于后端模拟的另一种更自动化的方式,看看swagger-api-mock与rest-json一起工作得很好。这些模块一起可用于生成 $httpBackend 响应:rest-json.js 作为对 json 数据的类 http 访问和 swagger-api-mock/lib/mock-data.js 作为基于 swagger 的 json 模拟数据对象的生成器(或 json 模式)定义

于 2015-07-03T22:12:57.937 回答