路由(Route)
这是网关的基本构建块。它由一个ID,一个目标URI,一组断言和一组过滤器定义。如果断言为真,则路由匹配。
断言(predicate)
输入类型是一个ServerWebExchange。我们可以使用它来匹配来自HTTP请求的任何内容,例如headers或参数。
过滤(filter)
可以在请求被路由前或者之后对请求进行修改。
举个例子:
你想去动物园游玩,那么你买了一张熊猫馆的门票,只能进入熊猫馆的区域,而不能去犀牛管瞎转。因为没有犀牛馆的门票,进不去,就算走到门口,机器也不能识别。这里门票就相当于请求URL,熊猫馆相当于路由,而门口识别门卡的机器就是断言。然后我进入熊猫馆里面看到工作人员我想很有可能是过滤器,结果还真是,他在我进入馆之前拿手持设备对我全身扫描看看有没有危险品(请求前改代码),并且在我出熊猫馆之后要求再次检察看看我是否携带熊猫出馆(请求后改动代码)。这个工作人员相当于过滤器。
总结
首先任何请求进来,网关都会把它们拦住。根据请求的URL把它们分配到不同的路由上,路由上面会有断言,来判断请求能不能进来。进来之后会有一系列的过滤器对请求被转发前或转发后进行改动。 具体怎么个改动法,那就根据业务不同而自定义了。一般就是监控,限流,日志输出等等。