首页 > 编程语言 >ASP.NET Core 过滤器返回自定义响应数据

ASP.NET Core 过滤器返回自定义响应数据

时间:2024-02-27 13:55:16浏览次数:20  
标签:Core ASP 自定义 apiResponse ApiResponse context var new public

自定义返回类

 public class ApiResponse
 {
     public int Code { get; set; }
     public string Message { get; set; }
     public object Data { get; set; }

     public ApiResponse(int code, string message, object data = null)
     {
         Code = code;
         Message = message;
         Data = data;
     }
 }

 ApiResultFilterAttribute

public class ApiResultFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext context)
    {
        if (context.Result is ObjectResult objectResult)
        {
            var apiResponse = new ApiResponse(200, "成功", objectResult.Value);
            context.Result = new ObjectResult(apiResponse);
        }
        else if (context.Result is EmptyResult)
        {
            var apiResponse = new ApiResponse(200, "成功");
            context.Result = new ObjectResult(apiResponse);
        }

        base.OnActionExecuted(context);
    }
}

ApiExceptionFilterAttribute

public class ApiExceptionFilterAttribute : ExceptionFilterAttribute
{
  
       public override void OnException(ExceptionContext context)
    { 
        var exceptionDetail = context.Exception.Message;
        var innerException = context.Exception.InnerException != null ? $" Inner exception: {context.Exception.InnerException.Message}" : string.Empty;

        var apiResponse = new ApiResponse(400, exceptionDetail + innerException);

        context.Result = new ObjectResult(apiResponse);
   
        context.ExceptionHandled = true;
    } 
}

在progarm.cs注册

builder.Services.AddControllers(options =>
{

    options.Filters.Add<ApiResultFilterAttribute>(); 
    options.Filters.Add<ApiExceptionFilterAttribute>(); 
});

返回结果

正常:

 异常:

 

标签:Core,ASP,自定义,apiResponse,ApiResponse,context,var,new,public
From: https://www.cnblogs.com/Huangjianfang/p/18036743

相关文章

  • 13.分布式事件总线DotNetCore.CAP的简单使用
    DotNetCore.CAP框架提供了一个简单易用的API和多种消息传输协议支持(包括Redis、RabbitMQ等),可以让用户轻松地实现消息队列、事件发布/订阅、分布式事务等功能。它还具备自动重试、异常处理、数据序列化等高级特性,可以保证消息的可靠性和一致性。使用DotNetCore.CAP框架,你可以:1.......
  • 在Winform界面中使用自定义控件,丰富界面的效果处理
    我们在《SqlSugar开发框架》中,Winform界面开发部分往往也用到了自定义的用户控件,对应一些特殊的界面或者常用到的一些局部界面内容,我们可以使用自定义的用户控件来提高界面的统一性,同时也增强了使用的便利性。如我们Winform界面中用到的分页控件、附件显示内容、以及一些公司、部......
  • 开发框架DevExpress XAF - Entity Framework Core 8支持.NET 8性能基准
    DevExpressXAF是一款强大的现代应用程序框架,允许同时开发ASP.NET和WinForms。XAF采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。对于使用EntityFrameworkCore(EFCore)(实体核心框架)的用户来说,这是一个......
  • Springboot的starter有什么用以及如何自定义一个starter
    SpringBoot的starter是什么我们都知道SpringBoot的目的就是为了让开发者尽可能的减少项目配置专注于程序代码的编写,而'starter'就是SpringBoot简便开发、自动装配的具体实现。以‘mybatis-spring-boot-starter’为例:<dependency><groupId>org.mybatis.spring.boot<......
  • Python嵌套绘图并为条形图添加自定义标注
    论文绘图时经常需要多图嵌套,正好最近绘图用到了,记录一下使用Python实现多图嵌套的过程。首先,实现Seaborn分别绘制折线图和柱状图。'''绘制折线图'''importseabornassnsimportmatplotlib.pyplotaspltimportwarningswarnings.filterwarnings("ignore","use_inf_as_n......
  • SSH框架使用AOP代理+自定义注解遇到的相关问题总结
    1、AOP注解失效问题编写完成注解和AOP切面类时,在controller中加上注解,注解不生效。在配置文件xml中开启AOP注解:<aop:aspectj-autoproxyproxy-target-class="true"/>如果该配置以加在项目里,但是还是不生效。需要检查一下自己的项目是否是Spring.xm分层配置的。如果分层配置的,需......
  • JdbcTemplate 自定义返回的结果集字段和实体类映射
    废话不多:抄袭代码packagecom.webank.wedatasphere.qualitis.handler;importcom.webank.wedatasphere.qualitis.response.Grid;importcom.webank.wedatasphere.qualitis.response.SelectRuleResponse;importorg.springframework.beans.factory.annotation.Autowired;impo......
  • ASP.NET MVC中使用Autofac依赖注入
      ASP.NETMVC中使用Autofac依赖注入官网文档:https://docs.autofac.org/en/latest/integration/mvc.html2024年02月26日在.net4.8framework建立的MVC项目中测试通过引入NUGET包:Autofac和Autofac.Mvc5Global中加入以下代码: //autofac注入ContainerBuilderbuil......
  • python如何将自定义目录添加到sys.path中,如何将自定义目录从sys.path中删除
    python如何将自定义目录添加到sys.path中,如何将自定义目录从sys.path中删除背景:在python脚本中,经常需要将自定义的包导入当前脚本,但该包并非pip安装,不在sys.path中,无法直接导入,所以需要临时导入自定义包;另外有时候将自定义的包永久写入了sys.path后,但实际又用不到该包,需要将自定......
  • [超实用插件]在Visual Studio中查看EF Core查询计划
    前言EFCore是我们.NET开发中比较常用的一款ORM框架,今天我们分享一款可以直接在VisualStudio中查看EFCore查询计划调试器可视化工具(帮助开发者分析和优化数据库查询性能):EFCore.Visualizer。值得推荐的.NETORM框架对于还不知道怎么选择.NETORM框架的同学可以看下面这两篇文......