【发布时间】:2019-09-27 09:22:56
【问题描述】:
我正在尝试从 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);
}
所以我的问题是如果有异常/错误,如何返回异常/错误,如果没有异常/错误,则按原样发送响应。这可以通过保持中间层返回类型原样来实现
现在,如果没有错误,那么我可以正确发送响应,因为我的中间层正在获取预期的返回类型。
问题是我的中间层方法有自己的返回类型,这导致我按原样发送异常/错误。因为我无法将它映射到正确的类或同一类。
我想在所有返回的类/类型下添加新的属性,这些类/类型将引用异常类,然后将异常/错误详细信息绑定到该类。这将节省在所有地方进行大量代码更改。
对此的任何帮助表示赞赏!
【问题讨论】:
标签: c# asp.net-web-api asp.net-core asp.net-web-api2