eclipse-vertx / eclipse-vertx/vertx-http-proxy
ExceptionHandler for send requests and proxy responses in `HttpProxy`/`ReverseProxy`
- Dominant language
- Java
- Stars
- 68
- Forks
- 37
- PR merge metrics
- No merged PRs in 30d
Description
#### Describe the feature
In case any interceptor fails with an exception, it is handled as a `502`.
We propose to introduce an `exceptionHandler` in the `HttpProxy` to customize this behavior, analogously it is done in the `HttpServerRequest`, `HttpServerResponse` and many others.
Relevant code:
```
proxy.sendRequest()
.recover(throwable -> {
log.trace("Error in sending the request", throwable);
return Future.succeededFuture(proxyRequest.release().response().setStatusCode(502));
})
.compose(proxy::sendProxyResponse)
.recover(throwable -> {
log.trace("Error in sending the response", throwable);
return proxy.response().release().setStatusCode(502).send();
});
```
(Source: https://github.com/eclipse-vertx/vertx-http-proxy/blob/4.5.13/src/main/java/io/vertx/httpproxy/impl/ReverseProxy.java#L78-L87)
#### Use cases
When applying interceptors, the proxy may want to return status codes that differ to the hard-coded `502`.
#### Contribution
I volunteer to implement this feature.
We propose to add the following methods to `HttpProxy` and `ReverseProxy`:
```java
HttpProxy requestExceptionHandler(Handler handler);
HttpProxy responseExceptionHandler(Handler handler);
```
Alternatively, only `exceptionHandler` may be added that is to be used on both request and responses.
Contributor guide
Assessment
This issue has not been assessed yet.