AngularJS – traitement RESTful $ réponse aux ressources

J'ai une application api et angularjs reposante. J'utilise $ resource dans une usine pour travailler avec cet api. J'ai un problème avec une seule demande. Je POSTE mon api pour créer des éléments.

/api/service/thing/make-things 

Je dois transmettre dans ma demande des données. Voici ce que je fais:

 $scope.someRequest = new SomeRequest(); // factory object returning an $resource $scope.someRequest.some_field = 'abc'; $scope.someRequest.$save({someAdditionalParams:'123'}, function(values){...handling response...}); 

Cela fonctionne bien et les données POST que je veux poster, mais dans ce cas particulier, ma réponse post est un ensemble d'objets.

 [{somestuff:'123'}, {somestuff:'321'} ... ] 

Angular essaie de le mapper à un objet et me lance une erreur que l'objet était attendu, mais a eu un tableau. J'ai essayé de créer une méthode de ressource séparée avec isArray: 1, mais elle a toujours échoué avec le même type d'erreur.

Donc, ma question est la suivante: comment gérer cette situation? Est-il possible d'annuler la copie de $ save résultat à $ resource object?

En utilisant $ save, il tentera de le repérer. Vous pouvez créer une nouvelle action avec isArray: true qui n'essaiera pas de mapper le résultat. Vous devriez évidemment gérer manuellement les résultats.

 var someRequest = $resource('/api/service/thing/make-things',{'create': {method:'POST', isArray:true}}); someRequest.create({some_field = 'abc',someAdditionalParams:'123'},function(data){ $scope.someRequestArray = data; }); 

L'architecture True RESTful est censée renvoyer ce qui a été créé, c'est pourquoi $ save fonctionne comme il le fait. Vos besoins sont légèrement différents, donc une action personnalisée est nécessaire.