7
votes

Obtenir une réponse de post restatangulaire

Comment puis-je obtenir l'objet de réponse après avoir envoyé un poste restangulaire? XXX

J'essaie d'obtenir le nouvel identifiant d'objet.

Merci.


0 commentaires

3 Réponses :


2
votes

Je n'ai pas travaillé avec directement, mais votre message doit probablement retourner un objet JSON avec l'ID. Ensuite, votre fonction de réussite doit l'accepter comme paramètre.

firstAccount.post("Buildings", myBuilding).then(function(resp) {
  console.log(resp.id);  // if the JSON obj has the id as part of the response
});


0 commentaires

17
votes

Je suis le créateur de Repoids. Flim a raison :).

Dans la promesse, vous obtenez l'objet renvoyé du serveur :) xxx

merci!


7 commentaires

Êtes-vous sûr que c'est la réponse réelle? J'ai un point d'extrémité d'API qui renvoie différentes données que celle envoyée. Sur la promotion, je reçois les mêmes données que celle envoyée sur POST , y compris les méthodes restatangulaires et toutes.


Hey. La méthode restatangulaire est effectivement ajoutée à toutes les réponses du serveur. Cela fait partie de ce qui le rend bien. Que tous vos objets que vous recevez sont améliorés pour être utilisés avec RESTANGULAIR. Si votre message ne renvoie rien à partir du serveur, je retourne le même objet que vous avez posté pour que vous obteniez quelque chose. Donc, si vous obtenez exactement les mêmes données que vous postez, vérifiez que vous retournez des données du serveur OK.


J'ai remarqué cela parce que l'API renvoie les données dans un format différent de ce qu'elle reçoit. Exemple: il reçoit {'catégorie': 'asd'} et renvoie {Catégorie: {id: 1, nom: 'asd'} . Cela a fonctionné sur NGRESOURCE, mais lorsque je me suis déplacé à la demande restatangulaire enfoncée, car la réponse est venue comme {'Catégorie': 'asd'} .


Si vous avez besoin de quelque chose de différent dans Post VS Obtenir, vous pouvez le faire à l'aide de RequestItTurceptor si cela se produit pour toutes les demandes ou à l'aide de méthodes CustomPost ou Custompute pour envoyer des objets personnalisés, mais vous pouvez le faire fonctionner.


albumlist.post (obj.data) .Chen (fonction (réponse) {console.log (réponse) obj.success (réponse)}, fonction (err) {obj.error (err)}) je suis indéfini décomposé


@mgonto Comment puis-je obtenir uniquement l'objet de réponse propre? sans objets emballés restatangulaires?


@Narekmamikonyana Vous pouvez appeler la méthode .plain () sur cet objet "Restangearized" que vous entrez dans la réponse. Voir ma réponse ci-dessous.



0
votes

Un poste restatangulaire attendra le même objet en réponse que celui publié.

Ceci est clairement vu avec des définitions dossescript. Supposons que nous ayons une méthode qui va recevoir un objet de type iTypea code> et il va la publier dans une URL comme http: // tout / API code>. Supposons que l'API de repos renvoie une 201 et également un JSON avec l'objet de réponse qui puisse être identique ou différent. Dans notre cas, supposons que le type renvoyé serait itypeb code>. Ensuite, notre Restankular ne sera pas en mesure d'utiliser un poste standard de iTypea code> et d'attendre une réponse de iTypeB code>, de sorte que le code suivant ne sera pas correct car il serait nécessaire de recevoir une réponse de type iTypea code> (identique à celle postée). p>

public postAnObject(objectToPost: models.ITypeA): ng.IPromise<models.ITypeB> {
     return this.restangular.all("objects")
            .customPOST(objectToPost)
            .then((restangularizedObjectTypeB: restangular.IElement) => {
                return restangularizedObjectTypeB.plain();
            }, (restangularError: any) => {
                throw "Error adding object. Status: " + restangularError.status;
            });
}


0 commentaires