Установка заголовка на Spring Weblux ServerResponse на основе реактивного содержимого - PullRequest
0 голосов
/ 23 сентября 2019

Spring 5's ServerResponse.HeadersBuilder предоставляет метод header(String, String) для добавления заголовка к ответу в реактивном стеке (используя Модель функционального программирования ).

Проблема в том, что мой заголовок зависит от содержимого, которое я хочу получить, что-то вроде:

public Mono<ServerResponse> getEntity(ServerRequest request) {
    String entityId = request.pathVariable("id");
    Mono<MyEntity> entity = service.findEntity(entityId);
    String headerValue = "???" // The header value depends on the values of the entity, which is not present at this point, here I only have access to the Mono 
    return ok().header("my-header", headerValue)
        .contentType(MediaType.APPLICATION_JSON)
        .body(entity , MyEntity.class);
  }

Как я могу указать «реактивный» заголовок?

1 Ответ

1 голос
/ 23 сентября 2019

Путем отображения того, что вы хотите, чтобы приложение делало

return service.findEntity(entityId).flatMap(entity -> {
    // Check entity and extract header the way you want

    return ok().header( ... );   
});
...