前言
七月初的某天,刚刚接到一个App对接项目。后台对接前端App,冗杂的接口协议,零碎的资源请求。
选用Spring Cloud 2.x来实现服务。
项目不大,建立网关,鉴权服务也可以集成进来。
“Zuul 已经停止维护了,建议你使用Gateway,完全可以跟上你的需求。” 向十多年经验IT一线前辈请教。
那么如何实现网关“脱壳”、“加壳”,从而实现改变到达后端服务的请求,或是改变后侧服务返回的内容呢?
初识
Clients make requests to Spring Cloud Gateway. If the Gateway Handler Mapping determines that a request matches a Route, it is sent to the Gateway Web Handler. This handler runs sends the request through a filter chain that is specific to the request. The reason the filters are divided by the dotted line, is that filters may execute logic before the proxy request is sent or after. All "pre" filter logic is executed, then the proxy request is made. After the proxy request is made, the "post" filter logic is executed.
客户端向Spring Cloud Gateway发出请求。如果网关处理程序映射确定请求与路由匹配,则将其发送到网关Web处理程序。此处理程序运行通过特定于请求的过滤器链发送请求。滤波器被虚线划分的原因是滤波器可以在发送代理请求之前或之后执行逻辑。执行所有“预”过滤器逻辑,然后进行代理请求。在发出代理请求之后,执行“post”过滤器逻辑。
参考网上的Spring Cloud Gateway文章
1.如何创建工程
2.如何路由转发
3.Hystrix(Feign :“???”)
我想要实现通过它来mod请求和返回。
实战
路由后端服务设置。Hystrix配置。异常返回设置。
在此示例中,在运行执行异常后HystrixCommand,请求将被转发到fallback运行的应用程序中的端点或处理程序localhost:9994。具有异常类型,消息和-if available-root的标头将导致异常类型和消息被FallbackHeaders过滤器添加到该请求中。
实现请求返回内容的修改
实现一个路由,自定义它的filter。
modifyRequestBody(a,b,c,d) a:请求入参类型 b:传给后端服务参数类型 c:请求类型 d:修改请求的实现方法(just方法返回类型为b)
modifyResponseBody() 同上