JavaScript从外部REST API映射JSON数据
对于我正在构建的web应用程序的前端,我使用restfulweb服务获取数据。此类呼叫和响应可能如下所示:JavaScript从外部REST API映射JSON数据,javascript,json,rest,design-patterns,mapping,Javascript,Json,Rest,Design Patterns,Mapping,对于我正在构建的web应用程序的前端,我使用restfulweb服务获取数据。此类呼叫和响应可能如下所示: // 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 st
// 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类创建
在我想要更改此对象的属性之前,这一切都很正常
例如,人的国家必须改变,因为他搬到了法国。他的名字也被编辑了,因为有一个错误:
person.country = 'FR'
person.name.first = 'John'
现在,必须将更改发送回外部服务:
//PUT api.example.com/persons/3
{
p_id:3,
p_fn:‘约翰’,
p_ln:‘史密斯’,
地址:{
街:'贝克街',
城市:“伦敦”,
cntry:'FR'//这就是我的示例的不同之处如果您将数据发送回,并且它是更新而不是补丁,那么您的类应该包含更新资源所需的所有属性
如何为类创建一个传递JSON的方法?以及一个将属性解析为正确格式的JSON的toJSON类方法。这个toJSON方法看起来如何?更改需要与旧的JSON合并,旧的JSON必须存储在某个地方。而将其存储在类中可能不是很有效。