2017-08-04 9 views
0

我已經使用spring mvc編寫了REST API,它託管在一個域上,而前端使用HTML和角色JS編寫,並託管在另一個域上。現在,我想從另一個放置Frond UI的域調用REST API,那麼如何使用相對URI而不是絕對URI調用REST API?從不同的域調用REST API,例如相對URL的angular JS

對於

webbrokerModule.factory('CustomerContact', [ '$resource', function($resource) { 
    return $resource('http://localhost:24000/webbroker/customercontact/:brokerid', { 
     brokerid : '@brokerid' 
    }, { 
     get : { 
      method : 'GET' 
     } 
    }); 
} ]); 

I want to call it as 
webbrokerModule.factory('CustomerContact', [ '$resource', function($resource) { 
    return $resource('/webbroker/customercontact/:brokerid', { 
     brokerid : '@brokerid' 
    }, { 
     get : { 
      method : 'GET' 
     } 
    }); 
} ]); 

我不想提IP地址和端口e.g.Instaed。

+0

檢查回答 https://stackoverflow.com/questions/18984518/angularjs-globally-modify-the-url-of-every-request-in-http – BotanMan

回答

1

您需要創建工廠或硬編碼資源的服務。

例如:

angular 
.module('app') 
.factory('storage', storageFactory); 

function storageFactory() { 

var r = 
{ 
    serverAdress : 'https://server.address.fr', 
    //serverAdress : 'https://another.server.adress.fr', 
    //serverAdress : 'http://localhost:3000', 
}; 

return r; 

} 

使用示例:

$http.get(storage.serverAdress + '/relative/path').then(function(res)... 

這樣你就可以封裝所有的硬編碼數據,更容易改變他們根據你的環境變量(例如,如果你想測試服務器的不同服務器地址或其他)。

這也是非常簡單的,如果有一天你想改變你的域名。這種做法被稱爲薄層。

+0

有沒有喜歡的Bootstrap應用任何事情能讓我使用相對url.right現在我有3個不同的環境,所以我需要根據您的邏輯有3個不同的文件 – jinal

+0

不,根本不需要,只需在運行時更改js文件中的serverAddress,如果您處於不同的環境 – Alburkerk

+0

只需請檢查tu如何使用process_env變量並使用該var而不是硬編碼serverAdress是該文件。這樣,文件中的serverAdress將始終引用一個linux環境變量。你的工作是在環境中啓動時在運行腳本中聲明它,但這很容易:) – Alburkerk

相關問題