# 《分布式IM系统》大后端平台-通用模型-第03节:缓存参数过滤器的设计与实现

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)
课程视频:https://t.zsxq.com/15aHWcja9 (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本节难度:★★☆☆☆
  • 本节重点:对大后端平台中通用的缓存参数过滤器进行设计与实现,掌握过滤器的基本原理,掌握在过滤器中缓存参数的实现方法,避免后续在全局过滤器中统一处理请求参数引发的异常,并能够结合自身实际项目进行思考,将其灵活应用到自身实际项目中。
  • 课程视频:https://t.zsxq.com/15aHWcja9 (opens new window)

大家好,我是冰河~~

大后端平台在设计上被分成用户微服务、好友关系微服务、群组微服务、消息微服务几个微服务后,对于一些通用的参数校验来说,在每个微服务中进行处理就显得比较冗余了。

# 一、前言

不知道大家有没有遇到过这种现象:在正常的HTTP请求中,如果我们实现了一个拦截器,统一获取到请求的消息体中的数据,对消息体数据进行校验,校验通过后,继续放行请求。当请求达到真正的业务接口时,我们可能会发现从请求体中获取到的数据为空。

为了避免这种现象发生,我们需要重新对请求体的数据进行封装,使请求真正达到业务接口时,还能从请求体中获取到数据。

# 二、本节诉求

基于过滤器实现缓存大后端平台请求体的参数数据,掌握过滤器的基本原理,并掌握在过滤器中缓存参数的实现方法,并能够将其灵活应用到自身实际项目中。

# 三、过滤器原理

说起过滤器,相信做过Java Web开发的小伙伴并不陌生,过滤器是基于Servlet规范实现的,其核心就是javax.servlet.Filter接口。Filter接口能够实现:在请求一个资源或者从一个资源返回信息的时候执行过滤操作。通过过滤器,我们可以实现用户在访问某个目标资源之前,对访问的请求和响应进行拦截,一般常用于实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

过滤器的大体执行流程如图3-1所示。


客户端访问目标资源时,会先执行过滤器中放行请求前的逻辑,随后执行放行请求的逻辑,接下来,访问目标资源。当资源访问完成后,还会回到过滤器中执行放行后的逻辑,最终返回给客户端。

如果在项目中实现并配置了多个过滤器,多个过滤器之间可以形成一个过滤器链,如图3-2所示。

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码