如何降低API的Url的复杂性

时间:2017-04-10 06:00:12

标签: angularjs api url

我有四个API,用于不同的控制器。

网址:“htp://192.168.0。 31 :8010 / register”

网址:“htp://192.168.0。 31 :8010 / login”

网址:“htp://192.168.0。 31 :8010 / verifyAccount”

网址:“htp://192.168.0。 31 :8010 /个人资料”

和全局网址

网址:“htp://192.168.0。 31 :8010 /

我想知道全局网址何时更改 31到16

网址:“htp://192.168.0。 16 :8010 /

然后我必须更改所有API的网址 31到16 。这太复杂了,花了很长时间。

我怎样才能克服它? 请给我一些建议。

2 个答案:

答案 0 :(得分:0)

您可以在角度Constant

中使用app.js来实现此目的

示例:

 app.constant("apiurl", {

        url:"htp://192.168.0.31:8010",

    });

将此常量作为依赖项注入到ur控制器并访问apiurl,如下所示:

Url : apiurl.url + 'register';

答案 1 :(得分:0)

您可以使用interceptor

来实现
  1. .value 提供商

    中添加API_URL
     angular
        .module('app')
        .config(routerConfig)
        .value('API_URL', 'http://192.168.0.31:8010');
    
  2. 在http拦截器中使用API_URL

     angular
        .module('app')
        .factory('httpInterceptor', function($q, API_URL) {
            var refresh = false;
            var interceptor = {
                request: function(config) {
                    // console.log('before config.url', config.url);
                    var url = config.url;
                    // skip the interceptor for any html request
                    if (url.substr(url.length - 5) == '.html') {
                        return config || $q.when(config);
                    }
                    config.url = API_URL + url;
                }               
            };
            return interceptor;
     });
    
  3. 现在在您使用$ http的其他服务中,您可以直接调用api方法;它将通过拦截器,它将添加API_URL

    angular
    .module('app')
    .factory('AuthService', function($http) {
    
        var service = {
    
            login: function(credentials) {
                return $http.post('/login');
            },
    
            logout: function() {
                return $http.get('/logout');
            }
       }; 
       return service;
    });