# 《高性能Polaris网关》通用过滤器-第02节:网关请求与响应核心工厂类的设计与实现
作者:冰河
星球: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)
沉淀,成长,突破,帮助他人,成就自我。
- 本章难度:★★☆☆☆
- 本节重点:对高性能Polaris网关的请求与响应的核心工厂类进行设计和实现,从全局角度掌握高性能Polarisg构建请求与响应信息的核心流程和代码设计。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。
大家好,我是冰河~~
网关的核心功能,也是最基础的功能就是接收请求和转发请求,并且向客户端响应服务端返回的结果数据,这就涉及到对请求参数与响应结果的封装。在通用模型设计中,已经完成了已经完成了网关的请求与响应模型,调用链路,服务定义与实例模型,服务配置缓存模型的设计与实现,也对网关上下文属性顶层接口、抽象类、工厂类和实现类进行了精心的设计。但与网关的其他模块进行交互,就需要更近一步对请求和响应的数据进行封装,以供其他模块方便的调用和获取对应的数据。
# 一、前言
距离上次网关更新差不多过去三个月了,相信很多小伙伴都有点等不及了,不过在这三个月中,除了网关外,冰河也更新了两个可在生产环境直接使用的高性能组件项目——《高性能通用熔断组件项目 (opens new window)》和《高性能通用监控指标上报组件 (opens new window)》,小伙伴们可以直接应用到自己或者公司的实际项目中。
还是说回网关,在通用过滤器篇章,我们已经对网关的顶级核心过滤器接口进行了设计和实现。在过滤器的具体逻辑实现中,需要处理请求的参数和响应的结果,为了在过滤器中更好的获取请求参数和响应接口数据,需要进一步封装请求和响应模型。
# 二、本节诉求
本节,对高性能Polaris网关的请求与响应的核心工厂类进行设计和实现,从全局角度掌握高性能Polarisg构建请求与响应信息的核心流程和代码设计。重点掌握整体调用链路的设计思路和设计方法,并能够将其灵活应用到自身实际项目中。
# 三、核心类设计
本节,我们对网关的请求和响应模型进行了进一步的封装,对外提供工厂类统一获取请求和响应的数据信息,类图关系如图2-1所示。

可以看到,我们为网关的请求和响应分别设计了两个工厂类,分别是RequestFactory和ResponseFactory。其中,RequestFactory是获取请求数据的工厂类,ResponseFactory是获取响应数据的工厂类。
RequestFactory类中提供的方法如下所示。
- getContext():对外提供的获取网关上下文的方法。
- getRequest():获取网关http请求对象,私有方法,只能在RequestFactory类中调用。
- getClientIp():获取客户端ip地址,私有方法,只能在RequestFactory类中调用。
- getServiceDefinition():获取服务的定义信息,私有方法,只能在RequestFactory类中调用。
- getServiceInoker():获取服务的调用器信息,私有方法,只能在RequestFactory类中调用。
- putContext():将服务放到网关上下文,私有方法,只能在RequestFactory类中调用。
ResponseFactory类中提供的方法如下所示。
- getHttpResponse(ResponseCode responseCode):根据响应码获取FullHttpResponse对象。
- getHttpResponse(PolarisContext context, PolarisResponseData response):根据上下文和响应信息获取FullHttpResponse对象。
# 四、编码实现
# 查看完整文章
加入冰河技术 (opens new window)知识星球,解锁完整技术文章、小册、视频与完整代码