1
Я делаю вызов api извлечения, но в случае ошибки 500 следующее промежуточное ПО запускает и отправляет обратно объект json в тело ответа.Как я могу получить фактическую ошибку из 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());
}
});
На стороне клиента У меня есть следующий код
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))
Я не в состоянии получить доступ к JSON с информацией об ошибке. Как мне это сделать ?
Работы кода после того, как после правильного ответа
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 */)
Спасибо за помощь, сейчас он работает. Я обновил рабочий код, но я чувствую, что его можно реорганизовать дальше. Какие-либо предложения ? – Akhil
Я думаю, что решение, которое вы предложили, неплохое. Существуют и другие варианты (например, https://pastebin.mozilla.org/8876465), но мне нравится ваш. – Marco
Я смог использовать некоторые лямбда, чтобы сократить это, еще раз спасибо! – Akhil