【问题标题】:How to create consistent API response class in ASP.NET Core 5 Web API如何在 ASP.NET Core 5 Web API 中创建一致的 API 响应类
【发布时间】:2022-10-06 10:52:38
【问题描述】:

如何在 ASP.NET Core 5 Web API 中创建一致的通用 API 响应类。

基本上我想得到来自 API 的响应,就像

{
    Status Code : 200 or 404 
    Result Count : 1 (null or 0 in case of error or no data found)
    Response : [array of data (error message in case of error)]
}

我在示例类下面创建了,但它仅在成功响应的情况下才有用。我无法在错误情况下使用它,因为Data 属性属于IEnumerable<T> 数据类型,我无法在字符串中传递错误消息。请问有什么帮助吗?

提前致谢。

public class Result<T> 
{
    public int StatusCode { get; set; }
    public int Count { get; set; }
    public IEnumerable<T> Data { get; set; }
}

//sample code in controller
public IActionResult<IEnumerable<User>> GetAll()
{
    var list = _userRepository.GetAll();
    var model = new Result<User>
    {
        StatusCode = 200,
        Count = list.Count,
        Data = list
    };

    return Ok(model);
}

    标签: c# asp.net-web-api asp.net-web-api2 .net-5


    【解决方案1】:

    要返回错误,您必须这样做

            var list = new List<string>()
            {
               "invalidata"
            };
            var model = new Result<string>
            {
                StatusCode = 400,
                Count = 0,
                Data = list
            };
    
            return BadRequest(model);
    

    然后你会得到这样的回应。

    【讨论】:

      【解决方案2】:
      public class ApiResponse
          {
              public ApiResponse(int statusCode, string message = null)
              {
                  StatusCode = statusCode;
                  Message = message ?? GetDefaultMessageStatusCode(statusCode);
              }
      
              public int StatusCode { get; set; }
              public string Message { get; set; }
      
               private string GetDefaultMessageStatusCode(int statusCode)
              {
                  return statusCode switch {
                      400 => "A bad request, you have made",
                      401 => "Authorized, you are not",
                      403 => "Forbidden from doing this, you are",
                      404 => "Resource found, it was not",
                      500 => "Errors are the path to the dark side. Errors lead to anger.  Anger leads to hate.  Hate leads to career change",
                      _ => null
                  };
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2020-07-06
        • 1970-01-01
        • 2023-01-27
        • 2021-11-21
        • 2018-02-08
        • 1970-01-01
        • 2021-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多