在上文中我們實現了統一業務異常處理,在異常響應中我們也使用了統一的響應格式返回給客戶端。
接下來我們就講一下約定統一的氫氣響應格式。
在業務開發中,一個規範統一的請求響應格式可以提高我們的前後端開發對接效率,同時清晰的結構提高了可讀性。
響應基類
首先定義一個最基礎的只提供Code和Message兩個屬性的基類
public class R
{
public R()
{
}
public R(string code, string message)
{
Code = code;
Message = message;
}
public string Code { get; set; } = "0";
public string Message { get; set; } = "success";
}
我們約定狀態碼0則是成功,Message成功默認爲success。
泛型響應類
業務請求中我們通常需要返回數據,所以一個統一格式泛型的響應類型就很有必要。我們直接繼承R類型,添加一個泛型屬性。
public class R<TData> : R
{
public R(TData data) : base()
{
Data = data;
}
public TData Data { get; set; }
}
分頁泛型響應類和分頁請求基類
除了我們普通的數據響應,我們很多情況也需要分頁查詢響應。那麼單獨構造一個分頁專用泛型的響應類型和分頁請求基類就很必要。
public class Page<TData> : R
{
public Page(List<TData> data, long total) : base()
{
Data = data;
Total = total;
}
public List<TData> Data { get; set; }
public long Total { get; set; }
}
同樣是繼承R基類,添加一個泛型List屬性和分頁Total屬性。
分頁請求基類,我們分頁請求大部分是固定的請求參數是頁碼,請求數據量,以及排序。所以我們把這三個屬性抽象出來形成基類。後續複雜的分頁業務查詢即可繼承此基類再額外增加查詢條件。
public class PageRequest
{
public int PageIndex { get; set; } = 1;
public int PageSize { get; set; } = 10;
public string OrderBy { get; set; } = "Id";
}
到這我們完成了我們基礎的請求響應格式的統一。
歡迎進羣催更。