Как мы можем условно направить на другой URL в Spring Cloud Gateway? Есть ли эталонный образец?

В Python 2.*, input позволяет пользователю ввести любое выражение, например. кортеж:

>>> a, b = input('Two numbers please (with a comma in between): ')
Two numbers please (with a comma in between): 23, 45
>>> print a, b
23 45

В Python 3.*, input походит на 2.* 's raw_input, возвращая вам строку, которая только что набрала пользователь (а не eval как 2.* используется input), поэтому вам нужно будет .split и / или eval, и c, но вы также будете БОЛЬШЕ больше контролировать все это.

1
задан Parameswaran V V 17 January 2019 в 17:12
поделиться

1 ответ

Мы делаем нечто подобное с заголовками запросов здесь . У нас есть абстрактный фильтр , который правильно настраивает URI, вам просто нужно определить URI из ServerWebExchange.

public class CookieToRequestUriGatewayFilterFactory extends
        AbstractChangeRequestUriGatewayFilterFactory<AbstractGatewayFilterFactory.NameConfig> {
    private final Logger log = LoggerFactory
            .getLogger(RequestHeaderToRequestUriGatewayFilterFactory.class);

    public RequestHeaderToRequestUriGatewayFilterFactory() {
        super(NameConfig.class);
    }

    @Override
    public List<String> shortcutFieldOrder() {
        return Arrays.asList(NAME_KEY);
    }

    @Override
    protected Optional<URI> determineRequestUri(ServerWebExchange exchange,
            NameConfig config) {
        String cookieValue = exchange.getRequest().getCookies().getFirst(config.getName());
        String requestUrl = determineUrlFromCookie(cookieValue);
        return Optional.ofNullable(requestUrl).map(url -> {
            try {
                return new URL(url).toURI();
            }
            catch (MalformedURLException | URISyntaxException e) {
                log.info("Request url is invalid : url={}, error={}", requestUrl,
                        e.getMessage());
                return null;
            }
        });
    }
}

Это будет зависеть от вас, чтобы реализовать determineUrlFromCookie().

0
ответ дан spencergibb 17 January 2019 в 17:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: