从网络发送正确的响应 api

Sending Proper Response from web api

我正在尝试从 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 class 我们有不同的方法和自己的 returning 类型,从这里我们调用第三方 API另一个 class.

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);
        }

所以我的问题是 return exceptions/errors 如果有,如果没有 exceptions/error 如何发送响应。这可以通过保持中间层 return 类型不变

来实现

现在,如果没有错误,我就可以正确发送响应,因为我的中间层正在获得预期的 returning 类型。

问题是我的中间层方法有自己的 returning 类型,这导致我按原样发送 exception/error。因为我无法将其映射到正确的 class 或相同的 class.

我想在所有 returning classes/types 下添加新的 属性 ,这将引用异常 class,然后将绑定 exception/error class 的详细信息。这将节省在所有地方进行大量代码更改。

感谢任何帮助!

为什么不创建自定义响应对象以便:

public IActionResult<MyCustomResponseObject> GetInfo([FromBody] InfoModel info)

public class MyCustomResponseObject
{
    public string Message { get; set; }
    public object Content { get; set; }
    public enum State { get; set; }
}