Is there an easy way to whitelist HTTP requests wi

2019-01-28 11:04发布

Due to some infrastructure changes (namely servers & VPNs) there are times I want to run our application in an offline mode. I've been able to implement this with ngMockE2E however it seems to be an all or nothing approach, meaning you have to explicitly set every single HTTP request out of the app.

Is there a way to have it assume that unless you have explicitly set a route/url to be handled that it will automatically call a generic passThrough() operation?

Currently I am doing this:

noSrvc = $location.search().hasOwnProperty 'nosrvc'

#
# templates
#
$httpBackend.whenGET /(\.htm|\.html)$/
.passThrough();

#
# session
#
rqst = $httpBackend.whenGET /(api\/users\/current)$/
if !noSrvc then rqst.passThrough() else rqst.respond {"user":{

# doing something similar for every single service call in the app... gets tedious after about 3-4

Most everything I've read on the subject deals with unit testing and doesn't really address the implied passthrough unless otherwise stated.

1条回答
三岁会撩人
2楼-- · 2019-01-28 11:21

That's the recipe I've used for whitelisting

app.run(function ($httpBackend) {
    // mocked requests, should come first
    $httpBackend.when('GET', 'mock').respond(200, {});

    // whitelisted real requests, should come last
    angular.forEach(['GET', 'DELETE', 'JSONP', 'HEAD', 'PUT', 'POST', 'PATCH'], function (method) {
        $httpBackend.when(method).passThrough();
    });
});

And I'm quite sure that precedence matters here.

查看更多
登录 后发表回答