springboot-使用总结-zj--zuul

首先是自己没有仔细买两本书看看,真的是不应该,这导致自己的水平的确不好

@ComponentScan和Application启动类的扫描二者不可得兼?

one ------ zuul

过滤器修改转发的url
https://blog.csdn.net/u012930316/article/details/80846553

 
 
 
 
 
 

 
 
 
 
@Component
public class UrlRedirectFilter extends ZuulFilter implements AbstractLogger{

    @Override
    public Object run() {
    	RequestContext ctx = RequestContext.getCurrentContext();
		HttpServletRequest request = ctx.getRequest();
		String url = request.getRequestURI(); 
		String newPath = "/one/two";
				// 将替换掉的url set进去,在对应的转发请求的url就会使用这个url
				ctx.put(FilterConstants.REQUEST_URI_KEY, newpath); 
			}
		}
    	return null;
    }
    
	@Override
	public boolean shouldFilter() {
		return true;
	}
 
	//filterOrder:过滤的顺序
	@Override
	public int filterOrder() {
		return 1;
	}
 
	/* (non-Javadoc)filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型,具体如下: 
					pre:路由之前
					routing:路由之时
					post: 路由之后
					error:发送错误调用
	 */
	@Override
	public String filterType() {
		return FilterConstants.ROUTE_TYPE;
	}
 
}

filterType必须是FilterConstants.ROUTE_TYPE,否则不生效,切记切记

pre:可以在请求被路由之前调用
route:在路由请求时候被调用
post:在route和error过滤器之后被调用
error:处理请求时发生错误时被调用

two------ 获取ek的地址,用来远程调用

得到地址

在这里插入图片描述
@Autowired
private DiscoveryClient discoveryClient;
### 传入ID
在这里插入图片描述

List instances = discoveryClient.getInstances(“S17-DCS”);
//必须是下面这个,http://ip + port + path
instances.get(1).getUri().toString()+ “/api/v1/device”

three------ 远程调用

@Autowired
private RestTemplate http;

 ResponseResult response = null;
            try {
                response = http.exchange(serviceInstance.getUri().toString()+ "/api/v1/device", HttpMethod.GET, new HttpEntity<>(d, null), ResponseResult.class).getBody();
            } catch (RestClientException e) {
                log.error(" use dcs api is error once {}",e);
                try {
                    response = http.exchange(instances.get(1).getUri().toString()+ "/api/v1/device", HttpMethod.GET, new HttpEntity<>(d, null), ResponseResult.class).getBody();
                } catch (RestClientException ex) {

@Configuration
public class GlobalComponent {
@Bean
public RestTemplate rest(){
return new RestTemplate();
}
}

four------ 监控

/actuator/routes

five------ 坑

InputStream responseDataStream = ctx.getResponseDataStream();
StreamUtils.copyToString(responseDataStream, Charset.forName(“UTF-8”))
001 如果你从post的filter中通过流拿出了结果,万一你不放回去,那就呵呵了,结果没了

002 如果想要修改路由的路径,必须在route中进行修改,不然不生效。

003 如果想要get类型转化为post,呵呵,请使用包装接口吧
004 get请求的参数在 getParam中,post请求在流中 ,混淆了,会导致你娶不到值的

six 配置参数

https://blog.csdn.net/xx326664162/article/details/83625104

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值