为了账号安全,请及时绑定邮箱和手机立即绑定

Zuul 路由优先级高于 Spring Controllers

Zuul 路由优先级高于 Spring Controllers

交互式爱情 2021-11-11 18:10:19
我的 api 网关服务中有控制器:@GetMapping("/test")我在我的一条路线中有相同的端点。当我调用 /test 时,我的请求被路由,如何提高 Spring Controller 的优先级而不是 zuul 路由?
查看完整描述

2 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

您可以使用在路径前面使用forward 向控制器添加路由,例如:


 zuul:

  routes:

    controller:

      path: /test

      url: forward:/test

    other:

      ...

并将其放在您的其他路由定义之前,如果是 YAML 文件,它将保留一个订单。


http://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#_strangulation_patterns_and_local_forwards


我没有测试过上面的例子,但我使用了一个类似的解决方案,它工作正常。


查看完整回答
反对 回复 2021-11-11
?
DIEA

TA贡献1820条经验 获得超2个赞

您可以使用 BeanPostProcessor 来减少 ZuulHandlerMapping 的顺序。默认值为 -200


@Configuration

public class MvcConfig extends WebMvcConfigurerAdapter {


    @Bean

    public ZuulBeanPostProcessor postBean() {

        return new ZuulBeanPostProcessor();

    }


 

    public static class ZuulBeanPostProcessor implements BeanPostProcessor {


        @Override

        public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {

            return bean;

        }


        @Override

        public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {

            if (bean instanceof ZuulHandlerMapping) {

                ((ZuulHandlerMapping) bean).setOrder(10);

            }

            return bean;

        }

    }

}


查看完整回答
反对 回复 2021-11-11
  • 2 回答
  • 0 关注
  • 248 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信