Asp.Net Core 统一Api返回值

Asp.Net Core 统一Api返回值

写在开头

在我们在前端调用后端接口时,常常会遇到返回数据不一致的问题,又或者当我们请求接口的时候我们常常需要判断结果,以调用不同的Toast或者Snackbar反馈给操作者,我们需要对接口返回数据进行统一的操作。

代码

首先我们需要一个返回结果类,他应当接收所有类型数据,即泛型

public record ResponseResult<T>
{
    public bool status { get; set; }
    public string? msg { get; set; }
    public T data { get; set; }
    public static  ResponseResult<T> Result(bool _status, T _data, string? _msg = null)
    {
        return new ResponseResult<T> { status = _status, data = _data, msg = _msg };
    }
}

那么现在在api控制器里可能是这样子的:

return ResponseResult<string>.Result(true, "","");

很显然,他看起来太长了,我们使用极为不便。

我们让他简化一点,通过继承ControllerBase

就像下面这样:

public class BaseController : ControllerBase
{
    protected  ResponseResult<T> Result<T>(bool status, T data, string? msg = null)
    {
        return  ResponseResult<T>.Result(status, data, msg);
    }
    protected  ResponseResult<T> ResultOk<T>(T data)
    {
        return  ResponseResult<T>.Result(true, data);
    }
    protected  ResponseResult<T> ResultFail<T>(string msg)
    {
        return  ResponseResult<T>.Result(false, default, msg);
    }
}

在这里我们添加了OkFail并保留了result

以下是相关使用场景:

return ResultOk(data); 
return ResultFail(error); 
return Result(error=="",data,error); 

json结果展示:

{
  "status": true,
  "msg": null,
  "data": [
    {
      "date": "2024-07-22",
      "temperatureC": -2,
      "temperatureF": 29,
      "summary": "Warm"
    },
    {
      "date": "2024-07-23",
      "temperatureC": -19,
      "temperatureF": -2,
      "summary": "Mild"
    },
  ]
}
posted @   ssz0312  阅读(156)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· DeepSeek “源神”启动!「GitHub 热点速览」
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示