簡體   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