我正在开发AngularJS
前端API
。但我需要使用一个rest API来尝试我的应用程序的工作行为。所以我应该先创建后台服务。是否有类似rest模拟器的服务来表示后端。所以我可以将前端和后端开发分开。
我发现了一种非常流畅和简单的方法来创建一个与后端完全相同的开发环境。
这就是我所做的:
我创建了一个使用ngMockE2E
并包装我的应用程序模块的开发模块:
(function () {
'use strict';
var appDev = angular.module('appDev', ['app', 'ngMockE2E']);
appDev.run(runAppDev);
runAppDev.$inject = ['$httpBackend', '$log', '$resource'];
function runAppDev($httpBackend, $log, $resource) {
$log.info('You are now in dev mode');
$httpBackend.whenPOST('/test').respond(
$resource('mock/test.json').get()
);
// Catch-all pass through for all other requests
$httpBackend.whenGET(/.*/).passThrough();
$httpBackend.whenPOST(/.*/).passThrough();
$httpBackend.whenDELETE(/.*/).passThrough();
$httpBackend.whenPATCH(/.*/).passThrough();
}
})();
每当我想模拟后端时,我都会用初始化我的应用程序
<html ng-app="appDev">
....
</html>
正如我所说,这种方法的优势在于,您可以实现与实际应用程序完全相同的资源服务(或http服务),并使用后端。在appDev
模块中,您只需要告诉您想要伪造哪些API路由返回一些模拟json。在我的情况下,所有其他API路由都被传递到后端。
这种方法是迄今为止使用最方便的,因为它只涉及angular-mocks
库,而不涉及其他内容。
您可以用期望返回的静态json对象创建一个目录,然后启动一个simpe服务器来提供这些文件
例如,如果目录DIR中有一个文件p.json,其中包含以下内容:{"姓名":"henri","年龄":12}启动以下命令将在http://localhost:8000/p.json
python-m SimpleHTTPServer 8000
PS:这将适用于您的GET方法,您需要对PUT和POST进行更复杂的处理,但这是一个启动
在开发整个前端时,我使用这个库来模拟API。
或者你可以使用http://sinonjs.org/docs/#server拥有伪造的XMLHttpRequest和完整的测试套件
或者,您可以创建静态json
文件以进行查询。
同时处理这两者是一种很好的做法。
- 编写REST路由(+测试)
- 写一个首页/指令/view/。。(+测试)
- 转到1
Check Atmo,一个通过用户界面轻松模拟Api的工具。