Использование предикатов в определении маршрута Spring не работает

Я пытаюсь определить маршрут с помощью модулей Spring WebFlux. Вот мое определение маршрута:

@Bean
public RouterFunction<?> routes(Handler handler) {
    Predicate<ServerRequest.Headers> predicate = headers -> headers.equals("clientId");
    return
            route(GET("/api/v1/client/info").and(headers(predicate)),handler::getInfo);
}

Мое намерение здесь состоит в том, чтобы определить конечную точку GET с определенным путем, и клиент должен предоставить заголовок запроса с именем clientId. Это определение не работает, когда я звоню в endPoint. Однако, если я уберу часть header(), вызов пройдет. Что мне здесь не хватает? Добрый совет.

Спасибо.

1 ответ

Как сказано в комментариях: вы не можете сравнивать строку с заголовком.
Предикату необходимо проверить, что headers.firstHeader("clientId") не равен нулю:

      Predicate<ServerRequest.Headers> clientIdPredicate =
                headers -> headers.firstHeader("clientId") != null;
Другие вопросы по тегам