Получить cookie после вызова конечной точки POST - PullRequest
0 голосов
/ 08 мая 2019

Я вызываю конечную точку POST от моего контроллера. Конечная точка POST проверяет пользователя и возвращает cookie. Я новичок в веб-потоке Spring, поэтому мне нужно получить cookie-файл и отправить его обратно.

@PostMapping(value = "/valid")
public ResponseWrapper<UserResponseDTO> validate(
    @RequestBody @Valid RequestWrapper<UserRequestDTO> request,
    HttpServletResponse res) {

WebClient webClient = WebClient.builder()
    .baseUrl(BASE_URI)
    .defaultHeader(HttpHeaders.CONTENT_TYPE,
        MediaType.APPLICATION_JSON_VALUE)
    .build();

Mono<ResponseWrapper> response = webClient.post()
    .uri(PWD_AUTH_URI)
    .contentType(MediaType.APPLICATION_JSON)
    .syncBody(request)
    .retrieve()
    .bodyToMono(ResponseWrapper.class);

ResponseWrapper<UserResponseDTO> wr = response.block();
    // how to get cookie from the webClient 
    // set into the "res" that cookie 

return wr;
}

1 Ответ

1 голос
/ 11 мая 2019

Вы можете получить доступ к куки-файлам ответа, используя ответ:

final String cookieName = "cookie_name";

// Retrieves cookie from WebClient
ResponseCookie cookie = webClient.post()
        .uri(PWD_AUTH_URI)
        .contentType(MediaType.APPLICATION_JSON)
        .syncBody(request)
        .exchange()
        .map(response -> response.cookies().getFirst(cookieName))
        .block();

// Set ResponseCookie as new cookie for response
res.addCookie(new Cookie(cookieName, cookie.getValue()));

Как указано в его комментарии akreddy.21 .

...