2017-08-06 1 views
1

Je construis une API backend Rails 5 qui recevra des demandes de mon application Ember. Cependant, j'ai de la difficulté à obtenir Ember pour formater la requête d'une manière que mon serveur Rails comprend.Personnaliser le format de la demande dans Ember

Par défaut, Rails crée des contrôleurs pour attendre les paramètres dans ce format, en supposant que le modèle est, disons, Car:

"car": { 
    "id": "1", 
    "name": "Foo", 
    "bar": "Bar", 
    ... 
} 

Cependant, il ressemble Ember envoie des demandes dans ce format:

"data": [ 
    { 
    id: "1", 
    type: "cars", 
    attributes: { 
     "name: "Foo", 
     "bar": "Bar", 
     ... 
    } 
] 

Que puis-je faire pour que Ember envoie des charges utiles de demande d'une manière que mon serveur Rails comprendra? Je vous remercie.

+0

Rails acceptant le format est le format REST, si l'adaptateur d'application et sérialiseur doit s'étendre '' RESTAdapter' pas JSONAPIAdapter'. – kumkanillam

+0

Merci. J'ai essayé de changer mon adaptateur d'application (application.js) en RESTAdapter, mais je ne comprends pas comment utiliser RESTSerializer. Pouvez-vous m'aider? – Argus9

+0

Votre sérialiseur doit également étendre 'DS.RESTSerializer'. Si votre réponse à la demande de l'API backend est conforme au format REST, tout fonctionnera correctement ... Si vous écrivez le backend, alors considérez le format JSONAPI – kumkanillam

Répondre

1

Votre Rails accepte le format d'adaptateur REST, pour que cela fonctionne correctement, votre adaptateur doit étendre DS.RESTAdapter et le sérialiseur doit étendre DS.RESTSerializer. Par défaut, il sera livré avec JSONAPIAdapter et JSONAPISerializer.

Si vous avez le contrôle sur le code de fin, alors considérez écrire la réponse de format de json-api pour que le braquage fonctionne hors de la boîte.

Référence:
https://emberjs.com/api/ember-data/2.14/classes/DS.RESTAdapter
https://emberjs.com/api/ember-data/2.14/classes/DS.RESTSerializer

https://emberjs.com/api/ember-data/2.14/classes/DS.JSONAPIAdapter https://emberjs.com/api/ember-data/2.14.9/classes/DS.JSONAPISerializer