Meine API mit Express.js implementiert json als normale Antwort zurückgibt, aber wenn ein Fehler aufgetreten ist, gibt Fehlercode mit einem Klartext, indem man einfach res.sendStatus(401)
aufrufen.ngResource transformResponse wie beide Fehler und normale Daten zu handhaben
Dies verursacht ein Problem auf meinem Frontend, ich Winkel ngResoruce verwenden, und der Ressource-Code ist wie folgt aus:
svc.authenticateApi = function() {
return $resource(apiEndpoint + 'authenticate', null, {
'save': {
method: 'POST',
transformResponse: function (data, header) {
console.log("transformResponse, header:", header());
console.log("transformResponse, data:", data);
return { data: angular.fromJson(data) };
},
},
});
};
Dies funktioniert gut, wenn die normalen JSON-Daten jedoch zurückgegeben werden, wenn Fehlerstatus zurückgegeben wird, der data
Parameter ist kein serialisierten JSON-String, dann ist es einfacher Text, und ich bekomme Fehler wie folgt aus:
Anscheinend transformResponse versucht Text zu analysieren Unauthorised
als JSON und fehlgeschlagen. Ich kann durch das Senden jede Fehlerreaktion als JSON auf dem Server Ende dieses Problem umgehen, indem so etwas wie `res.status (401) .send Aufruf ({Fehler:„Unauthorized“}, aber das fühlt sich an wie ein Hack, und ich weiß nicht Ich möchte den Fehlertext für jeden Statuscode manuell wiederholen
Gibt es einen besseren Weg, damit umzugehen? Ich will nicht, dass es klingt wie eine Ratte, aber ngResource-Dokument ist wirklich schlecht und ich denke, mit $ http ist eine viel bessere Lösung.