美文网首页
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