2017-05-06 8 views
0

私が構築している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にも当てはまりますか?このクライアント側のベストプラクティスはありますか?

答えて

0

データを送り返していて、更新でありパッチではない場合、クラスにはリソースの更新に必要なすべてのプロパティが含まれている必要があります。

JSONを渡すクラスのconstructor methodを作成する方法はありますか?そして、正しい形式のJSONにプロパティを解析するtoJSONクラスメソッド。

+0

このtoSONメソッドはどのように見えますか?変更は古いJSONとマージする必要があります。古いJSONはどこかに保存する必要があります。これをクラスの内部に格納することは、おそらくあまり効率的ではありません。 –

関連する問題