美文网首页
Zuul Gateway

Zuul Gateway

作者: 无羡爱诗诗 | 来源:发表于2019-01-10 16:47 被阅读162次
    zull网关用法示意图 zuul的配置

    如果我的controller写成:

    可以通过代理访问/heat/map/basic-map,但是返回的是

    返回的结果

    由于@RestController,视图解析器不能识别html页面。

    所以返回的json格式的数据,体现为字符串。

    如果我想返回html格式的页面怎么办?用@Controller替代@RestController

    访问结果

    直接访问相应的微服务正常返回html页面。

    为什么用zuul做代理就找不到页面?

    经过一番折腾,问题是解决了。问题出在注解上,合理使用注解才能配合zuul好好工作。

    先来看看注解:  @Controller

    public @interface Controller {

    /**

    * The value may indicate a suggestion for a logical component name,

    * to be turned into a Spring bean in case of an autodetected component.

        * @return the suggested component name, if any (or empty String otherwise)

    */

      @AliasFor(annotation =Component.class)

    String value()default "";

    }

    该注解是一个类型注解,只有一个属性 value,默认是空,如果设置了它代表是个组件名字。

    例如: @Controller(value ="/heat")//controller的名字是"/heat"

    其实这一点有点坑爹,既然是名字,属性名应该写成name,写成value有点误导我了。

    我们知道一个类如果使用了注解@Controller,那其实就是将一个Bean放进了Spring容器,此处这个Bean是一个Handler,名字叫“/heat”。

    再来研究@RestMapping这个注解

    给这个映射起名字 路径相关 与可变参数配合使用

    @Controller(value= “/heat”)与路由配置中的/heat相对应就可以访问这个资源了。

    api-heat:

        path: /heat/**

        serviceId: network-monitoring-heatmap-platform-service

    问题解决了,必须找到相应的controller才可以。

    还有一种办法,真实地url中不体现“/heat”.

    相关文章

      网友评论

          本文标题:Zuul Gateway

          本文链接:https://www.haomeiwen.com/subject/bjvarqtx.html