Я пытаюсь отправить правильный ответ из Web API, т. Е. Если произошла какая-либо ошибка, отправьте сообщение об ошибке.Поток кода для этого кода следующий:
[HttpPost]
public IActionResult GetInfo([FromBody] InfoModel info)
{
try
{
var result = new Info().ProcessInfoResponse(info);
if (result==null)
return BadRequest();
else
return Ok(result);
}
catch (Exception e)
{
Log.Error("some exception", e);
return StatusCode(500, e.Message);
}
}
и из среднего уровня, т.е. из класса Info у нас есть другой метод с собственным возвращаемым типом, и отсюда мы вызываем сторонние API, которые находятся вдругой класс.
public InfoResponse ProcessInfoResponse(InfoModel info)
{
try
{
var result = serviceLayer.Post<InfoModel>(info);
if (result != null)
{
// Do Something
}
else
{
Log.Error("some error");
return null;
}
}
catch (Exception ex)
{
Log.Error("some error");
return null;
}
}
public InfoRequest ProcessInfoRequest()
{
}
И на уровне сервиса мы вызываем сторонний API, как показано ниже
public HttpResponseMessage Post<T>(T parm) where T : class
{
try
{
_client.DefaultRequestHeaders.Clear();
var postTask = _client.PostAsync("some third party url", Serialize<T>(parm));
postTask.Wait();
if (postTask.Result.IsSuccessStatusCode)
{
return postTask.Result;
}
else
{
Log.Error("some error in service layer");
}
}
catch (Exception ex)
{
Log.Error("some error in service layer");
}
return default(HttpResponseMessage);
}
Поэтому мой вопрос заключается в том, как вернуть исключения / ошибки, если они есть, и еслинет исключений / ошибок, затем отправьте ответ как есть.Это возможно, сохраняя тип возвращаемого среднего уровня как
. Если сейчас ошибок нет, я могу правильно отправить ответ, поскольку мой средний уровень получает ожидаемый тип возврата.
Проблема в том, что мои методы среднего уровня имеют собственный возвращаемый тип, который заставляет меня отправлять исключение / ошибку как есть.Поскольку я не могу сопоставить его с соответствующим классом ИЛИ с тем же классом.
Я думал, что добавлю новое свойство во все возвращаемые классы / типы, которые будут ссылаться на класс исключения, а затем свяжет детали исключения / ошибкив этот класс.Это позволит сэкономить много изменений кода во всех местах.
Любая помощь по этому вопросу приветствуется!