Closed
Description
Is your feature request related to a problem? Please describe.
We use gateway and routes serving /services/*
.
/services/*
are stripped from url before passing to microservices.
We don't use *-ui
packages.
We want to rebuild the serverBaseUrl
based on the gateway populated X-Forwarded-Prefix
.
Using mvc:
@RequestScope
@Bean
public ServerBaseUrlCustomizer microserviceBaseUrlCustomizer(HttpServletRequest request) {
return serverBaseUrl -> {
String forwardedPrefix = request.getHeader("X-Forwarded-Prefix");
return forwardedPrefix == null
? serverBaseUrl
: UriComponentsBuilder.fromUriString(serverBaseUrl).path(forwardedPrefix).build().toString();
};
}
Using webflux without groups:
@RestController
public class JHipsterOpenApiWebfluxResource extends OpenApiWebfluxResource {
@Autowired
public JHipsterOpenApiWebfluxResource(
ObjectFactory<OpenAPIService> openAPIBuilderObjectFactory,
AbstractRequestService requestBuilder,
GenericResponseService responseBuilder,
OperationService operationParser,
SpringDocConfigProperties springDocConfigProperties,
SpringDocProviders springDocProviders,
SpringDocCustomizers springDocCustomizers
) {
super(
openAPIBuilderObjectFactory,
requestBuilder,
responseBuilder,
operationParser,
springDocConfigProperties,
springDocProviders,
springDocCustomizers
);
}
@Override
protected String getServerUrl(ServerHttpRequest serverHttpRequest, String apiDocsUrl) {
String serverBaseUrl = super.getServerUrl(serverHttpRequest, apiDocsUrl);
List<String> forwardedPrefix = serverHttpRequest.getHeaders().get("X-Forwarded-Prefix");
if (forwardedPrefix.size() > 0) {
return UriComponentsBuilder.fromUriString(serverBaseUrl).path(forwardedPrefix.get(0)).build().toString();
}
return serverBaseUrl;
}
}
But there is no way to customize using webflux and multiple groups.
Describe the solution you'd like
Add ServerBaseUrlCustomizer alternatives with request for webflux:
@FunctionalInterface
public interface ServerBaseUrlRequestCustomizer {
String customize(ServerHttpRequest serverBaseUrl);
}
And servlet:
@FunctionalInterface
public interface ServerBaseUrlRequestCustomizer {
String customize(HttpServletRequest serverBaseUrl);
}
Describe alternatives you've considered
Additional context
Metadata
Metadata
Assignees
Labels
No labels