.Net6 web API (ResouceFilter-ActionFilter)

前沿

net 中的 ResouceFilter 和 ActionFilter  有啥主要区别呢

其实2者都是过滤器

 

在ASP.NET Core中,Resource Filter和Action Filter是两种不同类型的过滤器,

用于在请求处理过程中执行额外的逻辑。它们可以用于对请求和响应进行处理、修改或拦截,

以实现诸如授权、日志记录、异常处理等功能。

 

Resource Filter(资源过滤器)

Resource Filter是在控制器实例化之前或操作方法执行之前执行的过滤器。它对整个请求的生命周期起作用,包括请求的开始和结束阶段。

Resource Filter通常用于处理全局性的逻辑,例如认证、授权、响应缓存等。它可以实现IResourceFilter接口。

Resource Filter的优势包括:

  • 可以全局性地应用到整个应用程序中,对请求的每个阶段都有效。
  • 可以访问请求和响应,对它们进行修改或拦截。

Action Filter(操作过滤器)

Action Filter是在操作方法执行之前和之后执行的过滤器。它主要针对特定的控制器操作方法(Action)。Action Filter可以实现IActionFilter接口。

Action Filter的优势包括:

  • 更加精确地控制过滤器的作用范围,可以针对特定的控制器操作方法进行设置。
  • 可以访问并修改操作方法的参数和结果,对其进行处理。

 

2者的场景和代码

Resource Filter的使用场景:

  • 身份验证和授权:在请求处理之前,检查用户的身份信息,并根据权限决定是否允许访问资源。
  • 响应缓存:在请求处理之后,根据缓存策略对响应进行缓存,提高性能。
public class MyResourceFilter : IResourceFilter
{
    public void OnResourceExecuting(ResourceExecutingContext context)
    {
        // 在处理请求之前执行的逻辑
    }

    public void OnResourceExecuted(ResourceExecutedContext context)
    {
        // 在处理请求之后执行的逻辑
    }
}

Action Filter的使用场景:

  • 日志记录:在操作方法执行之前和之后,记录请求的相关信息,例如请求路径、参数、执行时间等。
  • 异常处理:在操作方法执行期间,捕获并处理操作方法抛出的异常。
public class MyActionFilter : IActionFilter
{
    public void OnActionExecuting(ActionExecutingContext context)
    {
        // 在操作方法执行之前执行的逻辑
    }

    public void OnActionExecuted(ActionExecutedContext context)
    {
        // 在操作方法执行之后执行的逻辑
    }
}

 

posted @ 2024-05-24 17:49  -鹿-  阅读(55)  评论(0编辑  收藏  举报