2013-06-18 24 views
7

Makul bir soru gibi görünen şeylere bir cevap bulamıyorum.

Tüm uygulamam için web servislerini aramak için $ http hizmetini kullanıyorum. Tüm sunucu API'sı belirli bir adreste barındırılmaktadır. Sağlanan URL'yi her zaman API sunucusuyla önbelleğe almak için $ http alabileceğim bir yol var mı?

$http.get("http://myAPI/API/User") 

Ve Açısal önekleri sunucu adresi ile isteği: aksine

$http.get("User")... 

:

Örneğin benim API http://myAPi/API/ adresinde ise, ben arama yapabilmek istiyorum . Amaç, uygulamanın genelinde URL'nin yayılmamasıdır.

Angular ile bunu başarmanın bir yolu var mı? $ Http (angularjs kaynak kod düzenleme hariç) bu talebi işleme yerleşik bir yolu olmadığından

+0

olası yinelenen AngularJS] (http://stackoverflow.com/questions/17011616/using-a-relative-path-for-a-service-call-in-angularjs) – Stewie

+0

Şu anda sahip olduğum olası yinelenen ayrıntıları - aslında sunucu konumu Bir çeşit değişkende saklanır ve her aramaya manuel olarak önceden eklenir. Bu mümkün ise, önek otomatik olarak öneki için bir yol arıyorum. – jwest

cevap

4

, bir hizmetindeki $ http sarabilirsiniz ya:

apiService.get('user'); //where the service defines the $http call and builds the URL 

... ya da sadece bir açısal sabit oluşturun:

angular.module('myApp', []).constant('apiPrefix', 'http://myAPI/API/') 

$http.get(apiPrefix + 'User') 

Her iki şekilde "uygulamanın tamamında URL yayılmasını yok" olarak sonuçlanacaktır.

-1

http sağlayıcıya bir engelleyici eklemek mümkündür.

Ardından, kesicinizi kaydedersiniz.

$httpProvider.interceptors.push('myHttpInterceptor'); 

Sadece yapılandırma :)

+4

Bunu yaparken dikkatli olun, şablonlar da yakalanır. '/ Api/my_template.html' yüklemek istemiyorsunuz – Utopik

4

Bu eski bir soru düzenlemek zorunda ama bir süre önce bir çözüm yapılmış

angular 
    .module('app') 
    .config(function ($httpProvider) { 
    $httpProvider.interceptors.push(apiInterceptor); 
    }); 

// api url prefix 
var API_URL = 'http://localhost:8080/'; 

function apiInterceptor ($q) { 
    return { 
    request: function (config) { 
     var url = config.url; 

     // ignore template requests 
     if (url.substr(url.length - 5) == '.html') { 
     return config || $q.when(config); 
     } 

     config.url = API_URL + config.url; 
     return config || $q.when(config); 
    } 
    } 
} 
bir Servis Çağrı için Bağıl Yol Kullanarak [ait