기본적으로 HTTP/HTTPS 요청 및 응답을 내 컴퓨터에서 원격 URL (기본적으로 REST API)으로 보내고 싶습니다. 나는 내가 원하는 것을 얻는 데 도움이되는 도구가 많이 있다는 것을 이해하지만 Java에서 이것을 수행하는 유틸리티를 작성해야한다. (이것은 우리가 개발중인 일부 응용 프로그램에서 사용하기 때문에).Undertow - REST API에 대한 HTTP/HTTPS 트래픽을 모니터링하는 역방향 프록시 설정 방법
내가 원하는 것은 프록시 (또는 역방향 프록시 - 용어에 대한 나의 이해가 제한되어 있음)를 설정하는 것으로 모든 요청을 실제 API로 라우팅합니다. 이 프록시는 요청 본문 (POST 또는 PUT의 경우)을 캡처하여 실제 API에 요청을 전달하고 응답을 캡처하여 클라이언트에 다시 보내야합니다.
내가 언더우드에 왔는데, 이것을 사용하여 프록시 클라이언트 인 LoadBalancingProxyClient
을 사용하여 역방향 프록시를 만들고 실행할 수있었습니다. 하지만 여기에 몇 가지 질문이 있습니다.
내 API가 http://myrealapplication.com/rest/operation1
이라고 가정하고 JSON을이 API에 POST하려고합니다. 다음과 같이 내가 프록시 서버를 만든
:
- 내 리버스 프록시는 실질적으로 일종의되었다 : 그래서 내 역방향 프록시 서버를 시작한 후
LoadBalancingProxyClient loadBalancer = new LoadBalancingProxyClient(); loadBalancer.addHost(new URI("http://myrealapplication.com")); loadBalancer.setConnectionsPerThread(20); Undertow reverseProxy = Undertow.builder() .addHttpListener(8990, "localhost") .setIoThreads(4) .setHandler(Handlers.requestDump(new ProxyHandler(loadBalancer, 3000, null))) .build(); reverseProxy.start();
, 두 가지가있다 내 실제 API의 별칭이지만이 계층에서 요청과 응답을 어떻게 캡처합니까?
- 위의 설정을 통해 요청한이 프록시를 통과하려면 내 URL을
http://localhost:8990/rest/operation1
으로 변경해야합니다. 허용되지 않을 수 있습니다. 우리가 기대하는 것은 을 프록시로 설정하는 것입니다.을 입력하고 내 URL을http://myrealapplication.com/rest/operation1
으로 유지하여 실제 API에서 응답이 나오면 최종 클라이언트를 찾습니다.
이것을 달성하려면 어떻게해야합니까? 아니면 내 프로그램에서 사용할 수있는 Java API를 폭로하는 다른 도구가 있습니까?
도와주세요!
덕분에, 스리 람
감사합니다. 그러나 요청과 응답을 어떻게 캡처합니까? – sriramsridharan