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
habereturn 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 */)
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
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
Ich konnte etwas Lambda verwenden, um dies zu verkürzen, danke nochmal !! – Akhil