Zuul은 JVM 라우팅 및 Netflix에서 생성 된 서버 측을 기반으로 한로드 밸런서입니다.
Zuul 기능 :
Zuul의 규칙 엔진은 JVM 언어를 통해 규칙과 필터를 작성할 수 있으며 Java 및 Groovy 기반 구조를 지원합니다.
구성 속성 zuul.max.host.connections는 두 가지 새로운 구성 속성 인 zuul.host.maxtotalConnection (총 연결 수) 및 zuul.host.maxperrouteconnection (경로 당 연결 수)의 기본값이 각각 200과 20입니다.
1. 왜 이것을 사용하십시오
SpringCloud에 구축 된 마이크로 서비스 시스템에서 Gateway Zuul은 일반적으로 사용자 확인과 같은 일부 필터링 작업을 수행하는 데 사용됩니다. 예를 들어, 사용자는 헤더 또는 URL 매개 변수에 토큰을 저장합니다. 게이트웨이 레이어는이 토큰을 사용하여 사용자의 userID를 찾아 요청에 저장하여 후속 마이크로 서비스를 직접 사용하여 토큰으로 쿼리를 피할 수 있습니다.
2. 기본 지식
Zuul에서 가장 큰 사용은 필터 인 라우팅에 추가됩니다. 사용자 정의 필터는 인터페이스 Zuulfilter를 구현해야합니다. run () 메소드에서는 사용할 수 있습니다
requestContext CTX = requestContext.GetCurrentContext (); httpservletrequest 요청 = ctx.getRequest ();
요청을 받으십시오. 그러나 요청에는 getParameter () 만 있지만 setParameter () 메소드는 없으므로 URL 매개 변수를 직접 수정할 수 없습니다. 또한 setAttribute ()는 Reqeust에서 사용할 수 있지만, 다른 스코프로 인해 여기에 설정된 속성을 후속 마이크로 서비스에서 얻을 수 없으므로 다른 방법을 고려해야합니다.
3. 특정 관행
최종 방법은 사용하는 것입니다
ctx.setRequest (new httpservletrequestWrapper (request) {})컨텍스트에서 요청을 재구성하는 방법은 코드가 다음과 같습니다.
import javax.servlet.http.httpservletrequestwrapper; // userId adderId try {inputStream in = ctx.getRequest (). getInputStream (); 문자열 body = streamutils.copytostring (in, charset.forname ( "UTF-8")); System.out.println ( "Body :" + Body); jsonobject json = jsonobject.fromobject (body); json.put ( "userId", userId); 문자열 newbody = json.tostring (); System.out.println ( "Newbody :" + Newbody); 최종 바이트 [] reqbodybytes = newbody.getBytes (); ctx.setRequest (새로운 httpservletrequestwrapper (request) {@override public servletinputstream getInputStream () rows ioException {return new servletInputStreamWrapper (reqbodyBytes);} @Override public int getContentLength () {return reqbodyBytes.length; {return reqbodybytes.length}); } catch (ioexception e) {e.printstacktrace (); }아이디어는 요청 된 입력 스트림을 가져 와서 다시 작성하는 것, 즉 JSON 매개 변수를 다시 작성하는 것입니다.
후속 마이크로 서비스 컨트롤러에서는 모양을 사용할 수 있습니다
@requestbody map <String, object> body ====== body.get ( "userId");
이런 식으로 userID를 Zuulfilter로 통과하십시오
네. 일부 시도
httpservletrequestwrapper를 다시 작성할 때 getParameterNames() 및 getParameterMap() 메소드를 다시 작성하여 URL 매개 변수를 다시 작성하려고했지만 적용되지 않았습니다.
요약
위는 편집기가 소개 한 SpringCloud의 요청 매개 변수 정보를 수정하는 방법입니다. 나는 그것이 당신에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!