私が構築している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にも当てはまりますか?このクライアント側のベストプラクティスはありますか?
このtoSONメソッドはどのように見えますか?変更は古いJSONとマージする必要があります。古いJSONはどこかに保存する必要があります。これをクラスの内部に格納することは、おそらくあまり効率的ではありません。 –