对于构建的Web应用程序的前端,我使用RESTful Web服务来获取我的数据。这样的调用和响应可能如下所示:JavaScript映射来自外部REST API的JSON数据
// GET api.example.com/persons/3
{
p_id: 3,
p_fn: 'Jon',
p_ln: 'Smith',
p_addr: {
str: 'Baker Street',
city: 'London',
cntry: 'GB'
},
// and more stuff...
}
我并不需要所有这些数据在我的应用程序,所以我决定把它们映射到我自己的类。这也给了重命名和结构调整的属性,从外部API解耦的好处,并添加一些方法的能力:
class Person {
name: {
first: string,
last: string
};
country: string;
getFullName(): string {
return this.name.first + ' ' + this.name.last;
}
}
本例使用打字稿,但也可以使用ES6类创建
这很好,直到我想改变这个对象的属性。
例如Person
的国家必须改变,因为他搬到了法国。而且他的名字被编辑,因为有一个错误:
person.country = 'FR'
person.name.first = 'John'
现在的变化必须被送回外部服务:
// PUT api.example.com/persons/3
{
p_id: 3,
p_fn: 'John',
p_ln: 'Smith',
p_addr: {
str: 'Baker Street',
city: 'London',
cntry: 'FR' // This is where my example falls apart
},
// and more stuff...
}
但如果没有属性被更改,呼叫切不可完全可以执行,所以必须有某种检测。
所以基本上我不得不在这些本地实例和类DTO对象之间来回翻译。什么是设置这个最好的方法?
有没有这样做的标准方式?我听说过一些关于ORM或持久化模式的东西,但是这些适用于JavaScript的是什么?有没有最好的做法来做这个客户端?
这个toJSON方法怎么样?这些更改需要与旧的JSON合并,旧的JSON必须存储在某个地方。将它存储在课堂上可能不是非常有效。 –