2016-05-26 6 views
0

私はちょっと混乱していますが、明確にする必要があります。 カスタムアダプタまたはカスタムシリアライザを実装するべきですか?非JSONAPIサービス用にカスタマイズされたember-data

REST/jsonバックエンドと話すにはemberアプリが必要です。

私はリソースを公開するために私の燃えさしアプリをしたいなど:

GET /場所/:ID

しかし、それが接続するホストの場所にあるリソースがあります。

GET http://server/api/location/:id

サーバからペイロード:このための残り火で

{ 
    "id": "7ff3269e-d16c-4cc4-954d-aef8e662e0f6", 
    "geo": { 
    "latitude": 0, 
    "longitude": 0 
    }, 
    "typedAddress": { 
    "addressType": "US", 
    "countryCode": "US", 
    "name": "string", 
    "address1": "string", 
    "address2": "string", 
    "address3": "string", 
    "postalCode": "string" 
    }, 
    "customDescription": "string", 
    "timezone": "string" 
} 

マイモデル:あなただけRESTAdapterを使用して、独自のSerializerを記述する必要が

export default Model.extend({ 
    latitude: attr('number'), 
    longitude: attr('number'), 
    addressType: attr('string'), 
    countryCode: attr('string'), 
    address1: attr('string'), 
    address2: attr('string'), 
    address2: attr('string'), 
    city: attr('string'), 
    state: attr('string'), 
    briefPostalCode: attr('string'), 
    postalCode: attr('string'), 
    timezone: attr('string') 
}); 

答えて

4

モデルタイプが「場所」であるとします。

export default DS.RESTSerializer.extend({ 
    normalizeResponse(store, primaryModelClass, payload, id, requestType) { 
     let data= { 
      locations: [{ 
       id: payload.id, 
       latitude: payload.geo.latitude, 
       // etc. for all your properties 
      }] 
     }; 
     return this._super(store, primaryModelClass, data, id, requestType); 
    } 
}); 
+0

私はちょうど数分前に友人からこのアドバイスを受けました。私はそれと一緒に行くつもりです。おかげで –

+0

コメントをフォローアップ:私はあなたが[]のような場所が1つしかないのに気がついた。それが配列でなければならないという前提がありますか? –

+0

はい、モデル名には単数形または複数形で動作します。私は常に配列を仮定するのが最も簡単だとわかります。 –

関連する問題