2016-06-10 5 views
1

Ich mache einen Abruf-API-Aufruf, aber im Falle eines 500-Fehler tritt die folgende Middleware und sendet ein JSON-Objekt in Antwortkörper zurück.Wie bekomme ich den tatsächlichen Fehler von fetch api

app.Use(async (context, next) => 
     { 
      try 
      { 
       await next(); 
      } 
      catch (Exception ex) 
      { 
       if (context.Response.HasStarted) 
       { 
        throw; 
       } 
       context.Response.StatusCode = 500; 
       context.Response.ContentType = "application/json"; 
       var json = JToken.FromObject(ex); 
       await context.Response.WriteAsync(json.ToString()); 
      } 
     }); 

Auf der Clientseite ich den folgenden Code

habe
return fetch(url, content) 
    .then(function(res) { 
     if (!res.ok) { 
      console.log(res, res.json()) 
      throw Error(res.statusText); 
      } 
     return res; 
     }) 
    .then(res => res.json()) 
    .catch(e => console.log('Error fetching accounts:', e)) 

Ich bin die json mit Fehlern Zugriff auf Informationen nicht in der Lage. Wie kann ich es tun ?

Arbeits Code Nachdem Sie die richtige Antwort

return fetch(url, content) 
     .then(function(response) { 
      if (!response.ok) { 
       return response.json() 
        .then(function(obj) { 
         throw Error(obj.ErrorMessage) 
        }) 
      } 
      else { 
       return response.json() 
           .then(json => { 
            /*further processing */ 
           }) 
      } 
     }).catch(/* work with the error */) 

Antwort

2

Die json Funktion des Response Objekts gibt ein Versprechen, nicht mit dem tatsächlichen geparsten Wert.

res.json() 
.then(function(object) { 
    // Here you have the parsed JSON object. 
    console.log(object); 
}); 
+0

Danke für die Hilfe, es funktioniert jetzt. Ich habe den Arbeitscode aktualisiert, aber ich denke, dass er weiter verbessert werden kann. Irgendwelche Vorschläge ? – Akhil

+0

Ich denke, die von Ihnen vorgeschlagene Lösung ist nicht schlecht. Es gibt andere Optionen (z. B. https://pastebin.mozilla.org/8876465), aber ich mag Ihre. – Marco

+0

Ich konnte etwas Lambda verwenden, um dies zu verkürzen, danke nochmal !! – Akhil

Verwandte Themen