我们正在构建一个 AngularJS 应用程序,并使用 Restangular 作为我们的 REST-API。
现在我的想法是将 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);
});
最佳答案
我不认为你的方法有什么问题,没有。也许您习惯了强类型语言,例如 Java?我花了一些时间来适应 Javascript,因为它的类型非常松散。
我不确定这是否有帮助,但我已经开始按如下方式设置我的类(class):
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。
欢迎评论:)
关于javascript - 将矩形响应转换为模型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34514184/