【发布时间】:2017-10-05 01:11:30
【问题描述】:
对于我正在构建的 Web 应用程序的前端,我使用 RESTful Web 服务来获取我的数据。这样的调用和响应可能如下所示:
// 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;
}
}
此示例使用 TypeScript,但也可以使用 ES6 类创建
在我想更改此对象的属性之前,这可以正常工作。
例如Persons 的国家必须改变,因为他搬到了法国。而且他的名字也被编辑了,因为有一个错误:
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 吗?是否有在客户端执行此操作的最佳实践?
【问题讨论】:
标签: javascript json rest design-patterns mapping