這幾天沒更新,項目框架也是在發展階段,這幾天學習配置了一遍Apollo和RabbitMQ 等到放到框架上之后我整理一下到時候把心得寫出來相互學習。
接着上一篇的內容
(2) 程序錯誤時 返回數據格式封裝
(3) 返回結果包裝
(4) 對外開放的接口 參數必填與非必填的聲明
(2) 程序錯誤時 返回數據格式封裝/(3)返回結果包裝
2.1創建捕獲異常類當有異常發生時自定義返回信息 WebApiException

public class WebApiException : IExceptionFilter { /// <summary> /// 監控程序錯誤 /// </summary> /// <param name="context"></param> public void OnException(ExceptionContext context) { NewMethod(context); } private static void NewMethod(ExceptionContext context) { if (context.Exception is Exception) { var objectResult = context.Exception as Exception; if (objectResult.Message != null) { context.Result = new ObjectResult(new { Success = false, msg = "你的程序有誤!" }); //寫入日志 } } } }
2.2創建 結果封裝類 WebApiResultMiddleware 返回結果封裝成統一的樣式

public class WebApiResultMiddleware : ActionFilterAttribute { /// <summary> /// 對返回的結果進行統一的 格式 /// </summary> /// <param name="context"></param> public override void OnResultExecuting(ResultExecutingContext context) { //根據實際需求進行具體實現 if (context.Result is ObjectResult) { var objectResult = context.Result as ObjectResult; if (objectResult.Value == null) { context.Result = new ObjectResult(new { Success=false, code = 404, msg = "未找到資源", data ="null" }); } else { context.Result = new ObjectResult(new { Success = true ,code = 200, msg = "成功!", Data = objectResult.Value }); } } } }
2.3 在startup.cs 啟動容器中注冊 服務

services.AddMvc(options => { //方法返回結果統一化 options.Filters.Add(typeof(WebApiResultMiddleware)); //程序錯誤返回結果統一化 options.Filters.Add(typeof(WebApiException)); //身份驗證不通過是返回結果統一化 options.Filters.Add(typeof(WebApiAuthorizationFilter)); options.RespectBrowserAcceptHeader = true; });
返回結果就不在演示了,通過這三個類 我們能做很多的事情,比如寫一個錄入日志的方法就可以解決整個框架的寫日志問題。
(4) 對外開放的接口 參數必填與非必填的聲明
生成的路徑樣式
對控制器的包裝 支持傳輸參數的的聲明
我想先把基礎的東西寫下來 為以后做准備。
比如,路由的配置、DI、管道、中間件等,我也是在學習中希望和大家一起相互印證。