'How to create spring cloud gateway filter with synchronous http request

I'm creating a GateWayFilter to authenticate a request with a ticket.

public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
                //If you want to build a "pre" filter you need to manipulate the
                //request before calling chain.filter
                ServerHttpRequest serverHttpRequest = exchange.getRequest();
                ServerHttpRequest.Builder builder = serverHttpRequest.mutate();
                //use builder to manipulate the request

                List<String> tickets = serverHttpRequest.getQueryParams().get(TICKET);
                if (CollectionUtils.isEmpty(tickets)) {
                    return onError(exchange);
                }

                String ticket = tickets.get(0);

                // todo  use MONO?
                // todo add cache

                final ApiCaller apiCaller;
                try {

                    apiCaller = HttpRequestUtil.getObject(
                        "http://localhost:9001/authapi/authentication/ticket/" + ticket, ApiCaller.class);
                } catch (IOException e) {
                    log.warn("failed authenticate ticket: {}", ticket, e);
                    return onError(exchange);
                }

                if (apiCaller == null || StringUtils.isBlank(apiCaller.getLipCode())) {
                    log.info("not valid ticket: {}", ticket);
                    return onError(exchange);
                }

                ApiCallerUtil.addApiCaller(builder, apiCaller);

                return chain.filter(exchange.mutate().request(builder.build()).build());
            }

the problem is I use a blocking http request in the method,

Question 1: Is there any disadvantage of using the blocking HTTP request?
Question 2:How can I chang to reactor http request to get the ApiCaller Information?



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source