支持接口转发
This commit is contained in:
parent
d495905584
commit
b0fce77c05
@ -43,6 +43,7 @@ import io.vertx.core.json.JsonObject;
|
|||||||
import io.vertx.core.net.NetSocket;
|
import io.vertx.core.net.NetSocket;
|
||||||
import io.vertx.core.net.SocketAddress;
|
import io.vertx.core.net.SocketAddress;
|
||||||
import io.vertx.ext.web.RoutingContext;
|
import io.vertx.ext.web.RoutingContext;
|
||||||
|
import io.vertx.ext.web.client.HttpRequest;
|
||||||
import io.vertx.ext.web.client.WebClient;
|
import io.vertx.ext.web.client.WebClient;
|
||||||
import io.vertx.ext.web.handler.HttpException;
|
import io.vertx.ext.web.handler.HttpException;
|
||||||
import io.vertx.httpproxy.Body;
|
import io.vertx.httpproxy.Body;
|
||||||
@ -242,11 +243,10 @@ public class ReverseProxy implements HttpProxy {
|
|||||||
|
|
||||||
private Future<ProxyResponse> breakerAndSecurity(CircuitBreaker circuitBreaker, ProxyRequest proxyRequest) {
|
private Future<ProxyResponse> breakerAndSecurity(CircuitBreaker circuitBreaker, ProxyRequest proxyRequest) {
|
||||||
String appCode = proxyRequest.headers().get(AppConfigHandler.getAppCodeHeaderKey());
|
String appCode = proxyRequest.headers().get(AppConfigHandler.getAppCodeHeaderKey());
|
||||||
SocketAddress socketAddress = ProxyTool.resolveOriginAddress(proxyRequest.proxiedRequest());
|
|
||||||
return Future.future(p -> {
|
return Future.future(p -> {
|
||||||
circuitBreaker.executeWithFallback(promise -> {
|
circuitBreaker.executeWithFallback(promise -> {
|
||||||
mainWebClient.post(socketAddress.port(), socketAddress.host(), proxyRequest.getURI())
|
HttpRequest<Buffer> requestBuffer = methodGetRequestBuffer(proxyRequest);
|
||||||
.putHeaders(proxyRequest.headers())
|
requestBuffer.putHeaders(proxyRequest.headers())
|
||||||
.sendJson(bodyDecrypt(ctx.getBodyAsString(), appCode), h -> {
|
.sendJson(bodyDecrypt(ctx.getBodyAsString(), appCode), h -> {
|
||||||
if (h.succeeded()) {
|
if (h.succeeded()) {
|
||||||
log.info("==========uri:{},response http code:{}", proxyRequest.getURI(),
|
log.info("==========uri:{},response http code:{}", proxyRequest.getURI(),
|
||||||
@ -305,11 +305,10 @@ public class ReverseProxy implements HttpProxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Future<ProxyResponse> breaker(CircuitBreaker circuitBreaker, ProxyRequest proxyRequest) {
|
private Future<ProxyResponse> breaker(CircuitBreaker circuitBreaker, ProxyRequest proxyRequest) {
|
||||||
SocketAddress socketAddress = ProxyTool.resolveOriginAddress(proxyRequest.proxiedRequest());
|
|
||||||
return Future.future(p -> {
|
return Future.future(p -> {
|
||||||
circuitBreaker.executeWithFallback(promise -> {
|
circuitBreaker.executeWithFallback(promise -> {
|
||||||
mainWebClient.post(socketAddress.port(), socketAddress.host(), proxyRequest.getURI())
|
HttpRequest<Buffer> requestBuffer = methodGetRequestBuffer(proxyRequest);
|
||||||
.putHeaders(proxyRequest.headers()).sendJson(ctx.getBodyAsString(), h -> {
|
requestBuffer.putHeaders(proxyRequest.headers()).sendJson(ctx.getBodyAsString(), h -> {
|
||||||
if (h.succeeded()) {
|
if (h.succeeded()) {
|
||||||
log.info("==========uri:{},response http code:{}", proxyRequest.getURI(),
|
log.info("==========uri:{},response http code:{}", proxyRequest.getURI(),
|
||||||
h.result().statusCode());
|
h.result().statusCode());
|
||||||
@ -353,10 +352,10 @@ public class ReverseProxy implements HttpProxy {
|
|||||||
|
|
||||||
private Future<ProxyResponse> security(CircuitBreaker circuitBreaker, ProxyRequest proxyRequest) {
|
private Future<ProxyResponse> security(CircuitBreaker circuitBreaker, ProxyRequest proxyRequest) {
|
||||||
String appCode = proxyRequest.headers().get(AppConfigHandler.getAppCodeHeaderKey());
|
String appCode = proxyRequest.headers().get(AppConfigHandler.getAppCodeHeaderKey());
|
||||||
SocketAddress socketAddress = ProxyTool.resolveOriginAddress(proxyRequest.proxiedRequest());
|
|
||||||
return Future.future(p -> {
|
return Future.future(p -> {
|
||||||
mainWebClient.post(socketAddress.port(), socketAddress.host(), proxyRequest.getURI())
|
HttpRequest<Buffer> requestBuffer = methodGetRequestBuffer(proxyRequest);
|
||||||
.putHeaders(proxyRequest.headers()).sendJson(bodyDecrypt(ctx.getBodyAsString(), appCode), h -> {
|
requestBuffer.putHeaders(proxyRequest.headers()).sendJson(bodyDecrypt(ctx.getBodyAsString(), appCode),
|
||||||
|
h -> {
|
||||||
if (h.succeeded()) {
|
if (h.succeeded()) {
|
||||||
log.info("==========uri:{},response http code:{}", proxyRequest.getURI(),
|
log.info("==========uri:{},response http code:{}", proxyRequest.getURI(),
|
||||||
h.result().statusCode());
|
h.result().statusCode());
|
||||||
@ -381,6 +380,30 @@ public class ReverseProxy implements HttpProxy {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private HttpRequest<Buffer> methodGetRequestBuffer(ProxyRequest proxyRequest){
|
||||||
|
SocketAddress socketAddress = ProxyTool.resolveOriginAddress(proxyRequest.proxiedRequest());
|
||||||
|
HttpRequest<Buffer> requestBuffer = null;
|
||||||
|
switch (proxyRequest.getMethod().name()) {
|
||||||
|
case "PUT":
|
||||||
|
requestBuffer = mainWebClient.put(socketAddress.port(), socketAddress.host(),
|
||||||
|
proxyRequest.getURI());
|
||||||
|
break;
|
||||||
|
case "DELETE":
|
||||||
|
requestBuffer = mainWebClient.delete(socketAddress.port(), socketAddress.host(),
|
||||||
|
proxyRequest.getURI());
|
||||||
|
break;
|
||||||
|
case "GET":
|
||||||
|
requestBuffer = mainWebClient.get(socketAddress.port(), socketAddress.host(),
|
||||||
|
proxyRequest.getURI());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
requestBuffer = mainWebClient.post(socketAddress.port(), socketAddress.host(),
|
||||||
|
proxyRequest.getURI());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return requestBuffer;
|
||||||
|
}
|
||||||
|
|
||||||
private Future<ProxyResponse> sendProxyRequest(ProxyRequest proxyRequest) {
|
private Future<ProxyResponse> sendProxyRequest(ProxyRequest proxyRequest) {
|
||||||
// 判断<br/>
|
// 判断<br/>
|
||||||
// 1、是否配置全局加解密.<br/>
|
// 1、是否配置全局加解密.<br/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user