우선, 기록 필터 ZuulFilter를 상속하고, 상기 재기록 run () 메소드, 정보 요청 개체에 대한 액세스 :
CTX = RequestContext.getCurrentContext RequestContext (); HttpServletRequest의 요청 ctx.getRequest = (); 문자열 servletPath request.getServletPath = ()
정보를 GET 요구 객체 요청 후에 얻어 질 수있다 :
문자열 accessSys = request.getParameter ( "accessSys");
문자열 paramData = getRequestBody (요청);
개인 문자열 getRequestBody (HttpServletRequest의 요청) {
시도 {
의 InputStream v_inputstream = request.getInputStream ();
를 ByteArrayOutputStream baos = 새를 ByteArrayOutputStream ();
INT (X) = 0;
반면 ((X = v_inputstream.read ()) = -1!) {
baos.write (X);
}
baos.flush ();
새로운 String (baos.toByteArray (), UTF_8)을 반환;
} 캐치 (예외 전자) {
logger.error (e.getMessage (), 전자);
}
반환 "";
}
다음과 같이 2, 구성 정보를 가로 지르는 라우팅 경로의 라우팅 정보는 다음과 같습니다
@ConfigurationProperties (접두사 = "application.myroutes") 공용 클래스 MyRoutesConfig { 개인지도 <문자열, 문자열> 경로; 공개지도 <문자열, 문자열> getRoutes () { 반환 경로; } 공개 무효 setRoutes (MAP <문자열, 문자열> 루트) { this.routes =의 경로; } }
다음과 같이 구성 파일은 다음과 같습니다
# 사용자 정의 필터 노선 참조 : RestFaceFilter.java의
파일 응용 프로그램 :
myroutes :
경로 : {
- 서비스 : '전자 여권 플랫폼',
ProxyService : '전자 여권-exservice'
}
만약 (! 경로 = NULL) { 설정 <문자열> keySet 반환 = routes.getRoutes () keySet 반환 ().; (문자열 STR : keySet 반환)에 대한 { // logger.info ( "경로 키를 얻을 : {}", STR); 경우 (servletPath.startsWith ( "/"+ STR + "/")) { restface_forward = routes.getRoutes () 수 (STR).; 단절; } } }