关于springCloud简单的网关功能实现

      公司以前的架构,每个controller都会涉及到返回code,info,data三个值,而code和info都是重复的操作。遵循一个原则,如果一个动作重复了3次以上,就应该思考自己的代码了,在这里主要是借鉴了代理模式,主要返回一个data,将data增强再返回就可以实现了。

     公司采用springBoot和springCloud,利用了Zuul作为网关路由。使用了Zuul的ZuulFilter,类似拦截器的功能,将返回类型增强。主要核心代码是关于springCloud简单的网关功能实现_第1张图片

其中if判断,是因为如果controller可以通过直接抛出异常,而不用返回code和info,当controller试图抛出异常的时候,就会被spring处理,利用的是spring的全局异常处理

关于springCloud简单的网关功能实现_第2张图片

这样就能形成了简单的网关增强功能。

说一下自己遇见的坑

)1 由于springBoot启动类上写了@EnableFeignClients这个注解,会导致这个服务的controller会返回xml。网上也有提到过,但是并没有生效,我自己也没能解决,但是后面莫名就可以返回json了,我确实也找不到原因。

)2 之前以为抛出异常,就能够zuul接受,结果并不行,因此考虑到spring的AOP功能,理所当然想到了spring的异常处理,换了一个思路,如上图。

你可能感兴趣的:(工作,学习)