我正在開發的應用程序允許用戶更改服務器的IP(REST API所在的位置)。這個地址存儲在一個可以改變的變量中,但問題是當實例化服務時,基本URL不能被改變。在this answer之後,我能夠更改某些服務的網址,但對於那些有POST操作的用戶,我無法做到這一點。在AngularJS Factory中重寫URL
我試過幾種配置,但總是有問題。例如,這樣的:
// Services file
app.factory('Bookings', BookingsFactory)
function BookingsFactory($resource, GlobalVariables) {
return $resource('http://:url/api/bookings/:id/', null, {url: '@url'});
}
//Controllers file
Bookings.save(booking, {url: GlobalVariables.IPServer});
拋出此錯誤消息 「網:: ERR_NAME_NOT_RESOLVED」,因爲請求的URL是不正確的: 「http://api/bookings/?end_time=2015-06-30T09:30&name=Reunion&room=1&start_time=2015-06-30T09:43&started=true」。
如果我這樣稱呼它:
//Services file
app.factory('Bookings', BookingsFactory)
function BookingsFactory($resource, GlobalVariables) {
return $resource('http://:url/api/bookings/:id/', {url: '@url'});
}
//Controllers file
Bookings.save({booking: booking, url: GlobalVariables.IPServer});
我得到一個400錯誤的請求錯誤,並且響應要求對所有必填字段內容:「這是必須填寫」
我正在使用AngularJS v1.3.13。有沒有辦法使用這種方法在每個請求中更改基本URL,即使在POST請求中也是如此?或者甚至更好,在應用程序啓動後有沒有更新應用程序的每個工廠中的URL的方法?
對不起,但這並沒有爲我工作。我使用的是服務,然後在控制器中注入,所以我認爲這些服務在應用程序提供時實例化,因此一旦啓動應用程序就無法更改。我嘗試過使用rootScope,但是因爲這個原因,它無法正常工作。 – spiringer88
當您嘗試將服務器URL作爲參數發送到函數時,您知道服務可以接受參數嗎? –
是的,我試過了,它是在我的問題中的例子。我不知道我的問題是否與這些參數的順序有關,因爲當我執行POST請求時它崩潰了...... – spiringer88