Использование предикатов в определении маршрута 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;