Mit Ember.js Erhalten JSON-API in Server-Antwort aus einer Post-Anfrage
Habe ich eine API, die ich-Schnittstelle durch senden eines JSON-Objekt im body einer post-Anfrage. Im Gegenzug, nach erfolgreicher Autorisierung der server antwortet mit einer JSON-API-Feeds in den Körper der post-Antwort.
Wie kann ich Ember.js erhalten Sie die Nutzlast, die vom server zurückgegeben als ein Ergebnis des Sendens der JSON-Anfrage? Ich sehe, dass Ember Daten und Ember-Modell ermöglicht die Verwendung von Headern, aber es sieht nicht wie es die Fähigkeit, senden Sie eine POST-body.
Hier ist ein Beispiel für die JSON-brauche ich zum senden auf den server, um zu empfangen der JSON-API zurück in die post-Antwort.
{
"auth": {
"type" : "basic",
"password": "xxx",
"username": "someone"
},
"requestId" : 15,
"method": {
"name": "getUserAvailabilityAndInfo",
"params": {
"userId" : "000",
"peopleOnly" : "1"
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann ich nicht sprechen autoritativ zu ember-Daten (obwohl ich genug wissen, um zu behaupten, dass es sicherlich unterstützt das HTTP-verb POST), außer zu zitieren, die docs:
Sehen http://emberjs.com/guides/models
Die 'bestimmte Konventionen', die Ember-Daten beziehen sich auf oben ist ein bisschen ein bewegliches Ziel, aber die Ember-team ist in der Nähe der Kodifizierung, die definitiv (siehe jsonapi.org).
Auch vom doc:
Werde ich zeigen, wie genau das zu tun.
Der einfachste Weg, um loszulegen ist, um Sie nur Glut enthalten jQuery.ajax() Methode überall in Ihrer ember codebase:
(Siehe der standard-jquery-ajax () - Dokumentation für weitere details auf die oben genannten.)
Einige Beispiele, wie man tatsächlich so etwas wie die oben genannten in Ihrer ember-app:
Das Modell "Haken"
In einer entsprechende route-definition, würden wir überschreiben die Standard - Modell() Methode:
Zu sehen, das Modell hook in Aktion, würden Sie navigieren, um die route Weg, die Karten zum 'examplePost" route Staat über die verknüpfte URL (z.B., http:/myemberapp.example.com/#/examplePost). Weil unsere ajax-call ausgeführt App.examplePost() schließlich gibt die API-Daten auf ein erfülltes Versprechen (siehe die Erfolg () - Funktion), das Modell hook weiß zu nutzen, dass die Rückmeldung als Modell-Objekt (und es weiß, wie asynchron mit Versprechungen).
Ein "statisches Objekt" controller
Einen noch mehr künstliches Beispiel wäre, um die Standardeinstellung zu überschreiben setupController() Methode, die auch in der route-definition.
Den setupController-route-Methode (welche immer aufgerufen wird, unabhängig davon, ob Sie die Umstellung auf eine route Staat per URL oder anderen übergang-Methode) ist nicht wissen darüber verspricht, damit die .dann() Nutzung vor.
Wieder, würde Sie normalerweise nicht statisch laden ein literal Modell jedes mal, wenn Sie eine route Staat, aber es ist ein Weg, um begonnen zu erhalten, und mit der Chrome-Ember Inspector, wird Ihnen helfen, zu beweisen, dass in der Tat diese arbeiten können! Auch, jquery und verspricht, sind ein kompliziertes Thema, und in der Praxis, wenn Sie gerollt werden, Ihre eigenen client-API-code, den Sie wollen, um zu cast jquery-promise-Objekt in ein standard promise-Objekt (siehe promises.org) über Ember.Latente.Versprechen(), zum Beispiel. Dies ist nicht Gegenstand dieser Frage, aber FYI für Ihre nahe Zukunft Erkundungen.
Es ist möglich, mit dem ember-ajax service und/oder ES2015 Anfrage-Klasse
Dies ist eine neuere konventionelle Art und Weise (Ember 2.x) im Umgang mit API-Anfragen und-Antworten und somit die Antwort payload/Daten, ohne sich auf ember-data als
ember-ajax ver 2
kann direkt verwendet werden und es soll zu ersetzen, dieEmber.$.ajax
API.Mithilfe der
ajax
service ausgesetzt durch ember-ajax/Dienstleistungen/ajax, könnte man requests senden und verarbeiten von Antworten als solche: