Comment traiter la réponse du serveur de texte brut?

Je suis nouveau chez AngularJS et je crée une application qui interagira avec un serveur. Le serveur a une API REST, mais répond à certaines méthodes avec du texte brut, et à d'autres personnes avec JSON. J'ai mis en place une méthode de demande HTTP simple en utilisant le service de $resource AngularJS.

Cependant, lorsque la réponse du serveur est un texte brut, la réponse dans AngularJS est un objet avec une entrée pour chaque caractère dans le mot de réponse. Comment puis-je contourner cela (en bonne voie)? Idéalement, j'aimerais pouvoir dire à mon service quand je m'attends au texte en clair et à l'attente de JSON, et obtenir une réponse joliment formatée dans les deux cas.

$ Resource est un wrapper de commodité pour travailler avec des objets Restful. Il essayera automatiquement d'analyser comme JSON et de remplir l'objet en fonction de la définition de la ressource $.

Vous êtes beaucoup mieux en utilisant le service $ http pour des ressources non reposantes.

Il s'agit d'une API de niveau inférieur qui ne possède pas un cartographie d'objet de grande portée.

par exemple

 $http({method: "GET", url: "/myTextDocURL"}) .success(function(data){ // data should be text string here (only if the server response is text/plain) } ); 

Selon la documentation, vous spécifiez une action personnalisée pour une ressource qui peut remplacer le comportement par défaut qui consiste à convertir la réponse de json à un objet javascript. Le paramètre 'données' de la fonction transformResponse contiendra votre charge utile de texte.

Dans ce cas, la méthode transformResponse renvoie un objet contenant la chaîne plutôt que juste la chaîne elle-même car, sinon, il DOIT essayer de convertir la chaîne en un tableau.

  var Stub = $resource('/files/:filename', {}, {'getText': { transformResponse: function(data, headersGetter, status) { return {content: data}; } }}); 

Pour utiliser la ressource, appelez votre action getText () personnalisée plutôt que simple: get ():

  Stub.getText({'filename': 'someFile.txt'}, function(response) { console.info("Content of someFile.txt = " . response.content); }); 

C'est une ancienne publication, mais j'ai pensé qu'elle méritait une nouvelle réponse.