2015-12-29 5 views
0

Мы создаем приложение AngularJS и используем Restangular для нашего REST-API.Преобразование ответного ответа на объекты модели

Теперь моя идея состояла в том, чтобы преобразовать ответ API в типизированные объекты JS модели. Поэтому мы не слишком полагаемся на API, если имена полей отличаются от нашей логики кода, и мы независимы в коде интерфейса, чтобы называть изменения в API. Но это способ сделать это?

Я потерян, когда дело доходит до того, что мы хотим отправить обратно API. Все функциональные возможности объекта «restanguarlized» теряются в новом типизированном объекте модели. Как я могу преобразовать его обратно в post против API?

Является ли мой подход неправильным?

Но как насчет сплошного кода, который не прерывается, если API изменил некоторые свойства? Или как я могу увидеть, какие свойства предлагает моя модель, не глядя на ответ REST-API. В моем классическом способе программирования я открываю свой Model-Class и могу искать все свойства, предлагаемые объектом модели !?

Благодаря

вот несколько упрощенный пример кода реализации:

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 меняется, тогда я знаю, что мне нужно изменить свой класс.

Но я также перехожу к Typcript, так как он упрощает обработку моделей. Я определенно рекомендую посмотреть в TS.

Комментарии приветствуются :)

+0

Чтобы понять мою проблему, вы должны использовать Restangular. Вы получаете объекты запроса из REST API и возвращаете специализированные объекты. Если вы преобразуете их в новые объекты, «особое» поведение (в виде функций и т. Д.) Теряется. –

+0

Я использую Restangular, да, но я не знаю, как сохранить Restangularized функции, как только вы сохраните объект как TypedModel. Я просто делаю «сообщение», когда мне нужно сэкономить. Но было бы хорошо, соглашусь. –

Смежные вопросы