2015-12-29 73 views
0

我們正在構建一個AngularJS應用程序,並使用Restangular作爲我們的REST-API。將模型對象的Restangular響應轉換爲

現在我的想法是將響應從API轉換爲類型化的JS對象。因此,如果字段名與我們的代碼邏輯不同,我們不會太依賴API,並且我們在前端代碼中獨立於命名API中的更改。但是,這是做到這一點的方式嗎?

當我們想要回發到API時,我迷失了方向。新類型模型對象中的所有「重新縮放」對象的功能都會丟失。我怎樣才能將它轉換回針對API的發佈?

我的方法錯了嗎?

但是如果API已經改變了一些屬性,那麼固體代碼不會中斷嗎?或者我怎樣才能看到我的模型提供的什麼屬性,而無需查看REST-API響應。在我的經典編程方式中,我打開了我的模型類,並可以查看模型對象提供的所有屬性!?

感謝

這裏的執行一些簡單的例子代碼:

function TypedModel(data) { 
 
    this.foo = data.bar; 
 
} 
 

 
var typedModel; 
 
Restangular.one('service', 'infos').get().then(function(data) { 
 
    typedModel = new TypedModel(data); 
 
});

回答

0

我不認爲有什麼不妥你的方法,沒有。也許你習慣於強類型語言,比如Java?我花了一些時間來適應Javascript,因爲它是非常鬆散的類型。

我不知道這是否會有所幫助,但我已經開始建立我的班如下:

function TypedModel(pojo) { 
    if (!TypedModel.validate(pojo)) { 
     //Throw an exception if the POJO is not valid. 
    } 
    this.foo = pojo.foo; 
    this.bar = pojo.bar; 
    this.fooBar = pojo.fooBar; 
} 

TypedModel.validate = function(pojo) { 
    return (pojo.foo && pojo.bar && pojo.fooBar); 
}; 

這意味着,我可以看到我的類應該具有什麼性質,如果API的變化,然後我知道我需要改變我的班級。

但是我也正在轉向Typescript,因爲它使處理模型變得更容易。我肯定會建議尋找TS。

評論歡迎:)

+0

要理解我的問題,你必須使用Restangular。您從REST API獲取請求實體並取回專用對象。如果將它們轉換爲新對象,則「特殊」行爲(以功能等形式)將丟失。 –

+0

我確實使用了Restangular,但是我不知道如何在將對象保存爲TypedModel後保留Restangularized功能。當我需要保存時,我只是做一個「貼子」。但我很同意,這很好。 –