插件化編程之WebAPI統一返回模型

WebApi返回數據我們一般包裹在一個公共的模型下面的 , 而不是直接返回最終數據,在返回參數中,顯示出當前請求的時間戳,是否請求成功 , 如果錯誤那么錯誤的消息是什么,狀態碼(根據業務定義的值)等等 。我們常規的返回值常需要如下字段,為此我們可以先定義IResultDto 接口
/// <summary>/// 結果模型/// </summary>public interface IResultDto{/// <summary>/// 成功/// </summary>bool Successful { get; set; }/// <summary>/// 返回標識碼/// </summary>int Code { get; set; }/// <summary>/// 操作碼(用于冪等性驗證,每次請求都會返回一個新的,以便用戶下次更新使用)/// </summary>string OpCode { get; set; }/// <summary>/// 消息/// </summary>string Msg { get; set; }/// <summary>/// 常規數據/// </summary>dynamic Data { get; set; }}/// <summary>/// 結果模型/// </summary>public interface IResultDto{/// <summary>/// 成功/// </summary>bool Successful { get; set; }/// <summary>/// 返回標識碼/// </summary>int Code { get; set; }/// <summary>/// 操作碼(用于冪等性驗證 , 每次請求都會返回一個新的,以便用戶下次更新使用)/// </summary>string OpCode { get; set; }/// <summary>/// 消息/// </summary>string Msg { get; set; }/// <summary>/// 常規數據/// </summary>dynamic Data { get; set; }}對應的還接口的實現如下,為了更好的獨立性,在這里實現了成功和失敗賦值方法 。
/// <summary>/// 返回模型/// </summary>public class ResultDto : IResultDto{/// <summary>/// 返回標識碼/// </summary>public int Code { get; set; }/// <summary>/// 成功/// </summary>[JsonIgnore]public bool Successful { get; set; }/// <summary>/// 消息/// </summary>public string Msg { get; set; }/// <summary>/// 操作碼(用于冪等性驗證,每次請求都會返回一個新的,以便用戶下次更新使用)/// </summary>public string OpCode { get; set; }/// <summary>/// 常規數據/// </summary>public dynamic Data { get; set; }/// <summary>/// 成功/// </summary>/// <returns></returns>public ResultDto Success(string msg = "success"){this.Code = (int)EnumCode.Succeed;this.Successful = true;this.Msg = msg;return this;}/// <summary>/// 成功/// </summary>/// <param name="data"></param>/// <param name="msg"></param>/// <returns></returns>public ResultDto Success(dynamic data = https://www.huyubaike.com/biancheng/default, string msg ="success"){this.Code = (int)EnumCode.Succeed;this.Successful = true;this.Data = https://www.huyubaike.com/biancheng/data;this.Msg = msg;return this;}///

/// 成功/// /// /// 失敗/// /// /// <summary>/// 返回模型/// </summary>public class ResultDto : IResultDto{/// <summary>/// 返回標識碼/// </summary>public int Code { get; set; }/// <summary>/// 成功/// </summary>[JsonIgnore]public bool Successful { get; set; }/// <summary>/// 消息/// </summary>public string Msg { get; set; }/// <summary>/// 操作碼(用于冪等性驗證,每次請求都會返回一個新的,以便用戶下次更新使用)/// </summary>public string OpCode { get; set; }/// <summary>/// 常規數據/// </summary>public dynamic Data { get; set; }/// <summary>/// 成功/// </summary>/// <returns></returns>public ResultDto Success(string msg = "success"){this.Code = (int)EnumCode.Succeed;this.Successful = true;this.Msg = msg;return this;}/// <summary>/// 成功/// </summary>/// <param name="data"></param>/// <param name="msg"></param>/// <returns></returns>public ResultDto Success(dynamic data = https://www.huyubaike.com/biancheng/default, string msg ="success"){this.Code = (int)EnumCode.Succeed;this.Successful = true;this.Data = https://www.huyubaike.com/biancheng/data;this.Msg = msg;return this;}/// /// 成功/// ///

推薦閱讀