繁体   English   中英

JavaScript从外部REST API映射JSON数据

[英]JavaScript mapping JSON data from external REST API

对于我正在构建的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类创建

在我想要更改该对象的属性之前,它可以正常工作。

例如,该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吗? 是否有最佳实践来执行此客户端操作?

如果要发回数据,并且它是UPDATE而不是PATCH,则您的类应包含更新资源所需的所有属性。

如何为您传递JSON的类创建构造函数方法 还有toJSON类方法,您可以在其中将属性解析为格式正确的JSON。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM